将椭圆绘制为阵列

本文关键字:阵列 绘制 | 更新日期: 2023-09-27 18:25:47

希望这是一个相当简单的答案,但这不是谷歌搜索最容易的事情。

我计划使用简单的形状进行大量绘制,但实际结果直到最后阶段才需要显示给用户,所以为了速度起见,我想知道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);

感谢

将椭圆绘制为阵列

WPF中的"将形状绘制到缓冲区"可以通过使用DrawingContext将形状绘制在DrawingVisual中来完成。绘制完成后,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);