當前位置:成語大全網 - 新華字典 - WPF 獲取圖像像素的屏幕坐標(不要鼠標點擊獲得,而是知道哪個像素點得到對應的數據

WPF 獲取圖像像素的屏幕坐標(不要鼠標點擊獲得,而是知道哪個像素點得到對應的數據

1、新建壹個 Window,添加壹個Grid

<Window?x:Class="WpfApplication1.MainWindow"

xmlns="/winfx/2006/xaml/presentation"

xmlns:x="/winfx/2006/xaml">

<Grid>

<Grid?Name="panel"?Margin="50">

</Grid>

</Grid>

</Window>

2、添加類 FunnyBrush,這是我自己寫著玩的

public?class?FunnyBrush

{

public?static?void?Draw(Panel?panel)

{

var?brush?=?new?RadialGradientBrush();

var?center?=?new?Point(panel.ActualWidth?/?2d,?panel.ActualHeight?/?2d);

brush.Center?=?center;

brush.GradientOrigin?=?center;

brush.RadiusX?=?center.X;

brush.RadiusY?=?center.Y;

brush.MappingMode?=?BrushMappingMode.Absolute;

Console.WriteLine(center);

var?stops?=?new?GradientStopCollection();

stops.Add(new?GradientStop(Colors.Yellow,?0d));

stops.Add(new?GradientStop(Colors.Red,?0.25d));

stops.Add(new?GradientStop(Colors.Blue,?0.75d));

stops.Add(new?GradientStop(Colors.LimeGreen,?1d));

brush.GradientStops?=?stops;

panel.Background?=?brush;

var?win?=?FindParent<Window>(panel)?as?FrameworkElement;

if?(win?==?null)?win?=?panel;

win.MouseMove?+=?(obj,?args)?=>

{

brush.GradientOrigin?=?args.GetPosition(panel);

};

win.SizeChanged?+=?(obj,?args)?=>

{

var?pt?=?new?Point(panel.ActualWidth?/?2d,?panel.ActualHeight?/?2d);

brush.Center?=?pt;

brush.RadiusX?=?pt.X;

brush.RadiusY?=?pt.Y;

};

}

//?這個方法來自

//?/fallincloud/article/details/6960255

public?static?T?FindParent<T>(DependencyObject?d)?where?T?:?DependencyObject

{

DependencyObject?parent?=?d;

while?(parent?!=?null)

{

parent?=?VisualTreeHelper.GetParent(parent);

if?(parent?!=?null?&&?(parent?is?T))

{

return?parent?as?T;

}

}

return?parent?as?T;

}?

}

3、在 Window_Loaded 事件中添加代碼

FunnyBrush.Draw(panel);