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

时间:2009-10-20 22:27:25

标签: wpf coordinates pixel mousemove

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

(我需要像素坐标而不是图像相对于其大小的坐标)

提前致谢。

2 个答案:

答案 0 :(得分:6)

您可以从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;

玩得开心

Jobi Joy

答案 1 :(得分:2)

如果你的Image的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();
    }