Question

Je souhaite tracer une ligne (ou toute forme géométrique) sur un objet existant BitmapSource dans ma demande WPF. Quelle est la meilleure façon de le faire?

Le BitmapSource est le résultat d'un appel BitmapSource.Create (...).

Merci

  • Romain
Était-ce utile?

La solution

Ci-dessous l'échantillon affiche une image créée à partir d'une BitmapSource avec une ligne rouge sur le dessus de celui-ci. Est-ce ce que vous essayez d'atteindre?

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>

Code de derrière:

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);
            }
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top