Ich denke, Sie machen es sich selbst schwerer, wenn Sie WriteableBitmap.WritePixel verwenden. Sie haben eine viel bessere Zeit Zeichnen mit Shapes oder mit RendterTargetBitmap und ein DeviceContext.
Hier ist etwas Code, wie Sie mit dieser Methode zeichnen würden.
MainForm's XAML:
<Grid>
<Image Name="Background"
Width="200"
Height="200"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>
MainForm's Code-Behind:
private RenderTargetBitmap buffer;
private DrawingVisual drawingVisual = new DrawingVisual();
public MainWindow()
{
InitializeComponent();
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
buffer = new RenderTargetBitmap((int)Background.Width, (int)Background.Height, 96, 96, PixelFormats.Pbgra32);
Background.Source = buffer;
DrawStuff();
}
private void DrawStuff()
{
if (buffer == null)
return;
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawRectangle(new SolidColorBrush(Colors.Red), null, new Rect(0, 0, 10, 10));
}
buffer.Render(drawingVisual);
}
Stellen Sie die Breite/Höhe des Bildes so ein, wie Sie es wünschen. Die gesamte Zeichenlogik sollte sich innerhalb der using-Anweisung befinden. Sie werden feststellen, dass die Methoden von DrawingContext viel flexibler und leichter zu verstehen sind als WritePixel. Rufen Sie "DrawStuff" immer dann auf, wenn Sie ein erneutes Zeichnen auslösen wollen.