2009-10-20 159 views

回答

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

+0

感谢您的帮助,您的解决方案似乎是简单和高效。 非常感谢! – Mario 2009-10-21 12:14:19

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(); 
    } 
+1

你是对的,图像宽度返回NaN的帖子的上一个答案 – 2016-08-17 07:07:10