WPF如何显示的Image.Source(的BitmapSource)的像素位置?(WPF how

2019-08-22 10:01发布

让我们假设我有足见其在缩放的方式源的图像,我怎么能使用MouseMove事件的标签,以显示或文本块的像素位置的光标是什么?

(我需要的像素坐标图像相对于不坐标于其尺寸)

提前致谢。

Answer 1:

你可以找到从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;

玩得开心

苡乐



Answer 2:

如果图像的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();
    }


文章来源: WPF how to show an Image.Source (BitmapSource) pixel position?