WPF как отобразить изображение.Исходное положение пикселя (BitmapSource)?

StackOverflow https://stackoverflow.com/questions/1597681

Вопрос

Предположим, у меня есть изображение, которое показывает его источник масштабированным способом, как я мог бы использовать Событие MouseMove, чтобы показать в метке или текстовом блоке положение пикселя, в котором находится курсор?

(Мне нужны координаты пикселей, а не координаты изображения относительно его размера)

Заранее благодарю.

Это было полезно?

Решение

Вы можете узнать фактическую высоту и ширину пикселя из источника изображения.

    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 ширина элемента управления равна двойному.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();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top