Нарисуйте овал в массив - PullRequest
0 голосов
/ 26 февраля 2012

Надеюсь, это будет довольно простой ответ, но это не самая простая вещь для Google.

Я планирую много рисовать, используя простые формы, но фактический результат ненужно отображать пользователю до последнего этапа, так что ради скорости мне было интересно, существуют ли в c # / WPF методы для рисования простых форм в буфере без издержек BitmapSource, поэтому в конце яможно просто скопировать его в WritableBitmap.

Что-то вроде

PixelFormat pixelFormat = PixelFormats.Default;
int stride = bitmapWidth * pixelFormat.BitsPerPixel / 8;
byte[] pixels new byte[bitmapHeight * stride];
*some static library*.DrawOval(xpos=10,ypos=10,radius=5, pixels, stride, pixelFormat);

Спасибо

1 Ответ

0 голосов
/ 26 февраля 2012

«Рисование фигур в буфер» в WPF можно выполнить путем рисования фигур в DrawingVisual с использованием DrawingContext . Когда рисование закончено, DrawingVisual может быть визуализирован в RenderTargetBitmap .

Пример:

DrawingVisual drawingVisual = new DrawingVisual();

using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
    drawingContext.DrawEllipse(null, new Pen(Brushes.Black, 1), new Point(100, 100), 50, 50);
}

Drawing drawing = drawingVisual.Drawing;

using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
    drawingContext.DrawDrawing(drawing);
    drawingContext.DrawEllipse(null, new Pen(Brushes.Black, 1), new Point(100, 100), 60, 60);
}

RenderTargetBitmap bitmap = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Default);
bitmap.Render(drawingVisual);
...