假设我有一张以缩放方式显示其来源的图像,我如何使用 MouseMove 事件在标签或文本块中显示光标所在的像素位置?
(我需要像素坐标而不是图像相对于其大小的坐标)
提前致谢。
假设我有一张以缩放方式显示其来源的图像,我如何使用 MouseMove 事件在标签或文本块中显示光标所在的像素位置?
(我需要像素坐标而不是图像相对于其大小的坐标)
提前致谢。
您可以从 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;
玩得开心
如果您的图像的 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();
}