我有ResourceDictionary
Canvas
,我需要获得mouseDown
事件的位置(以及此WPFpixel的颜色)。
所以,我有一个像这样的XAML代码:
<Canvas Grid.Column="1" Grid.Row="0" Width="200" Height="200" SnapsToDevicePixels="True" Background="{StaticResource CustomBrush}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<local:EventToCommand RouteEventArgs="True" Command="local:ColorPicker.SomeAction" CommandParameter="{Binding Path=Position}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
因此,在我的.cs文件中,我可以从命令参数e.Parameter
获取位置。
我试图找到任何信息,但除MouseEventArgs
之外,所有示例均为ExecutedRoutedEventArgs
。所以,问题是:我需要使用哪个CommandParameter
?或者你可以建议任何其他解决办法。
我的第二个问题是如何获得颜色。我有一个渐变的自定义填充,我无法分析确切的颜色具有精确的像素。
提前致谢!
答案 0 :(得分:0)
我找到了一个解决方案。
我添加了一个处理程序
AddHandler(PreviewMouseLeftButtonDownEvent, new MouseButtonEventHandler(Get_position), true);
然后我得到函数Get_position
private static void Get_position(object sender, MouseButtonEventArgs e)
{
DependencyObject parent = e.OriginalSource as UIElement;
while (parent != null && !(parent is Canvas))
parent = VisualTreeHelper.GetParent(parent);
if (parent != null)
{
var point = e.GetPosition(parent as UIElement);
int x = (int)point.X;
int y = (int)point.Y;
}
}
然后我可以将它们发送给我。也许,它不是最好的解决方案,但它有效......
关于计算像素的颜色,我没有找到任何解决方案。但是,我通过计算R,G,B值来解决它。我有一个带渐变画笔的画布。所以,如果我知道宽度/高度,我可以计算它们。 另一方面,它对我来说仍然是一个有趣的问题。