将 Canvas 与许多子路径一起使用的最佳方式
Best way to use Canvas with many paths as children
我们目前正在使用 Canvas 在 UI 中为 WinRT、UWP 呈现条形码。我们通过添加每个点(QR 条形码中的黑点)作为 canvas 中的路径来实现这一点,这在渲染时使用更多时间来显示条形码。以高性能实现这一目标的有效方法是什么。
二维码图片:
我找到了一个解决方案,将条形码绘制为图像而不是 canvas。
public WriteableBitmap Render()
{
byte[] foreground = new byte[] { 0, 0, 0, 255 };
byte[] background = new byte[] { 0, 100, 0, 255 };
WriteableBitmap bmp = new WriteableBitmap(2, 2);
bmp.PixelBuffer.AsStream().Write(foreground, 0, 4);
bmp.PixelBuffer.AsStream().Write(background, 0, 4);
bmp.PixelBuffer.AsStream().Write(foreground, 0, 4);
bmp.PixelBuffer.AsStream().Write(background, 0, 4);
bmp.Invalidate();
return bmp;
}
我们目前正在使用 Canvas 在 UI 中为 WinRT、UWP 呈现条形码。我们通过添加每个点(QR 条形码中的黑点)作为 canvas 中的路径来实现这一点,这在渲染时使用更多时间来显示条形码。以高性能实现这一目标的有效方法是什么。
二维码图片:
我找到了一个解决方案,将条形码绘制为图像而不是 canvas。
public WriteableBitmap Render()
{
byte[] foreground = new byte[] { 0, 0, 0, 255 };
byte[] background = new byte[] { 0, 100, 0, 255 };
WriteableBitmap bmp = new WriteableBitmap(2, 2);
bmp.PixelBuffer.AsStream().Write(foreground, 0, 4);
bmp.PixelBuffer.AsStream().Write(background, 0, 4);
bmp.PixelBuffer.AsStream().Write(foreground, 0, 4);
bmp.PixelBuffer.AsStream().Write(background, 0, 4);
bmp.Invalidate();
return bmp;
}