WPF アプリケーションの既存の BitmapSource オブジェクトに線 (または任意の幾何学的形状) を描画したいと考えています。それを行う最良の方法は何ですか?
BitmapSource は BitmapSource.Create(...) 呼び出しの結果です。
ありがとう
- ロマン
WPF アプリケーションの既存の BitmapSource オブジェクトに線 (または任意の幾何学的形状) を描画したいと考えています。それを行う最良の方法は何ですか?
BitmapSource は BitmapSource.Create(...) 呼び出しの結果です。
ありがとう
以下のサンプルは、BitmapSource から作成された画像の上に赤い線が表示されます。それはあなたが達成しようとしていることですか?
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);
}
}
}
}