Как нарисовать линию на существующем Bitmapsource в WPF?

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

  •  29-09-2019
  •  | 
  •  

Вопрос

Я хотел бы нарисовать строку (или любую геометрическую форму) на существующем объекте Bitmapsource в моем приложении WPF. Какой лучший способ сделать это?

Bitmapsource является результатом Bitmapsource.create (...) вызова.

Спасибо

  • Роман
Это было полезно?

Решение

Ниже приведен образец будет отображать изображение, созданное из растрога, с красной линией сверху. Это то, что вы пытаетесь достичь?

XAML:

<Window x:Class="WpfApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid Background="LightBlue">
        <Image Source="{Binding Path=ImageSource}" />
        <Line 
            Stroke="Red" StrokeThickness="10" 
            X1="0" 
            Y1="0" 
            X2="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}}" 
            Y2="{Binding Path=ActualHeight, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}}" />
    </Grid>
</Window>

Код позади:

using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace WpfApplication
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            DataContext = this;
        }

        public BitmapSource ImageSource
        {
            get
            {
                PixelFormat pf = PixelFormats.Bgr32;
                int width = 200;
                int height = 200;
                int rawStride = (width * pf.BitsPerPixel + 7) / 8;
                byte[] rawImage = new byte[rawStride * height];

                Random value = new Random();
                value.NextBytes(rawImage);

                return BitmapSource.Create(width, height, 96, 96, pf, null, rawImage, rawStride);
            }
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top