假设我已经有一个图像以缩放的方式显示其源,我如何使用一个 MouseMove事件在标签或文本块中显示光标所在的像素位置?WPF如何显示Image.Source(BitmapSource)像素位置?
(我需要在象素座标不是图像相对于的坐标以它的大小)预先
感谢。
假设我已经有一个图像以缩放的方式显示其源,我如何使用一个 MouseMove事件在标签或文本块中显示光标所在的像素位置?WPF如何显示Image.Source(BitmapSource)像素位置?
(我需要在象素座标不是图像相对于的坐标以它的大小)预先
感谢。
您可以从ImageSource中找到实际的像素高度和宽度。
ImageSource imageSource = image.Source;
BitmapImage bitmapImage = (BitmapImage) imageSource ;
现在,您已经在Image控件中显示图像。您可以轻松将鼠标位置映射到像素比例。
pixelMousePositionX = e.GetPosition(image).X * bitmapImage.PixelWidth/image.Width;
pixelMousePositionY = e.GetPosition(image).Y * bitmapImage.PixelHeight/image.Height;
玩得开心
如果图像的XAML如下:
<Border Grid.Row="1" Grid.Column="0"
BorderThickness="3"
BorderBrush="BlueViolet">
<Image x:Name="Image_Box"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Source="8.jpg"
Stretch="Uniform"
MouseMove="ImageBox_OnMouseMove"
/>
</Border>
也许Image
控制的宽度double.Nan,所以我们需要使用ActualWidth
财产。所以代码如下:
private void ImageBox_OnMouseMove(object sender, MouseEventArgs e)
{
ImageSource imageSource = Image_Box.Source;
BitmapSource bitmapImage = (BitmapSource)imageSource;
TextBoxCursor_X.Text =(e.GetPosition(Image_Box).X * bitmapImage.PixelWidth/Image_Box.ActualWidth).ToString();
TextBoxCursor_Y.Text = (e.GetPosition(Image_Box).Y * bitmapImage.PixelHeight/Image_Box.ActualHeight).ToString();
}
你是对的,图像宽度返回NaN的帖子的上一个答案 – 2016-08-17 07:07:10
感谢您的帮助,您的解决方案似乎是简单和高效。 非常感谢! – Mario 2009-10-21 12:14:19