1

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

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

提前致谢。

4

2 回答 2

7

您可以从 ImageSource 中找出实际的像素高度和宽度。

    ImageSource imageSource = image.Source;
    BitmapImage bitmapImage = (BitmapImage) imageSource ;

现在,由于您在图像控件中显示了图像。您可以轻松地将鼠标位置映射到像素比例。

pixelMousePositionX = e.GetPosition(image).X * bitmapImage.PixelWidth/image.Width;
pixelMousePositionY = e.GetPosition(image).Y * bitmapImage.PixelHeight/image.Height;

玩得开心

乔比乔伊

于 2009-10-21T05:42:57.340 回答
3

如果您的图像的 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();
    }
于 2015-10-09T05:01:25.097 回答