我对WPF很新,所以我正在学习这个艰难(但有趣)的方式。我正在构建一个类似HSV的colorPicker usercontrol,并希望获得这种行为,因为“选择器”仅限于椭圆区域(实际上是圆形),所以我使用的是拇指。当移到外面时,选择器应该靠在一边而不能移动。我相信这是最常见的GUI行为,所以这就是它的行为。随意建议一个更好的行为!限制拇指椭圆区域
是否有一个共同的,已知的和推荐的解决方案呢,还是每个人都需要每次重新发明车轮?
如何解决这个问题的好主意?
代码隐藏:
public partial class HSVColorPicker : UserControl
{
public HSVColorPicker()
{
InitializeComponent();
}
void onDragDelta(object sender, DragDeltaEventArgs e)
{
Canvas.SetLeft(thumb, Canvas.GetLeft(thumb) + e.HorizontalChange);
Canvas.SetTop(thumb, Canvas.GetTop(thumb) + e.VerticalChange);
}
}
XAML:
<Grid>
<Canvas x:Name="canvas">
<Image x:Name="wheel" Source="colorwheel.png" Width="300" Margin="5,5,0,0"/>
<Thumb Name="thumb" DragDelta="onDragDelta" Canvas.Left="104" Canvas.Top="68" Template="{StaticResource thumbTemplate}" />
</Canvas>
</Grid>
虽然我在这里,大拇指总是拖动光标背后,有另一种方式来创建这个?正如我所说,我是新来的WPF和GUI制作,所以也许有明显的解决方案,我没有想到;)
谢谢,虽然它不会在光标在外边不动,但你确实做了很大一部分工作!如果光标离开并重新进入,拇指和光标也会分开,所以我会进行一些调试并接受您的答案。完成后会发布我的最终解决方案。 – Bob 2012-04-14 11:29:35