, yapmaman Her seferinde bir pikselin renklerini değiştirmeyin, bunun yerine her bir olay işleme yönteminde farenin konumunu kaydedin. Daha sonra, satırını numaralı bir satıra bir önceki konum (önceki olay oluşumundan kaydedilen) arasında çizmeniz ve bu iki nokta arasında bir Line
çizmeniz gerekir. Bu çizginin sürekli olmasını sağlayacaktır. WriteableBitmap
adresindeki çizgi çizimleri ile ilgili bilgiler şu adreste bulunabilir: Drawing line using WPF WriteableBitmap.BackBuffer. Çizgiyi çizdikten sonra, geçerli olana kaydedilen önceki konumu güncellemeyi unutmayın :).
GÜNCELLEME
Ben de başka bir çözüm buldum. olaylar ele arkasında olan kod ekleyin, ardından
<Window x:Class="SampleWPFApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="500" Width="520" Loaded="Window_Loaded" PreviewMouseDown="Window_PreviewMouseDown">
<Grid x:Name="layoutRoot" Background="Transparent">
<Image x:Name="image" />
</Grid>
Ve:
//set width and height of your choice
RenderTargetBitmap bmp = null;
//...
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//initialize RenderTargetBitmap object
bmp = new RenderTargetBitmap((int)this.ActualWidth, (int)this.ActualHeight, 90, 90, PixelFormats.Default);
//set initialized bmp as image's source
image.Source = bmp;
}
/// <summary>
/// Helper method drawing a line.
/// </summary>
/// <param name="p1">Start point of the line to draw.</param>
/// <param name="p2">End point of the line to draw.</param>
/// <param name="pen">Pen to use to draw the line.</param>
/// <param name="thickness">Thickness of the line to draw.</param>
private void DrawLine(Point p1, Point p2, Pen pen, double thickness)
{
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
//set properties of the Pen object to make the line more smooth
pen.Thickness = thickness;
pen.StartLineCap = PenLineCap.Round;
pen.EndLineCap = PenLineCap.Round;
//write your drawing code here
drawingContext.DrawLine(pen, p1, p2);
}
}
Olası kopya: http://stackoverflow.com/questions/3000591/drawing-line-using-wpf-writeablebitmap-backbuffer –