【发布时间】:2012-04-25 17:56:42
【问题描述】:
我对 WPF 很陌生,所以我正在以艰难(但有趣)的方式学习其中的大部分内容。我正在构建一个类似 HSV 的颜色选择器用户控件,并且希望获得我用作“选择器”的拇指仅限于椭圆区域(实际上是圆形)的行为。当移到外面时,选择器应该粘在一边,根本不动。我相信这是最常见的 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 制作的新手,所以也许有一些我没有想到的明显解决方案;)
【问题讨论】:
标签: c# wpf user-controls slider area