gpt4 book ai didi

c# - 在 WPF 中快速渲染绘图视觉效果

转载 作者:太空狗 更新时间:2023-10-29 21:46:13 26 4
gpt4 key购买 nike

目前,我在 Canvas 上有一张图像,可以在我的应用程序中自由移动,我在应用程序上渲染了 6 层 DrawingVisuals,但它似乎很慢。我正在使用 RenderTargetBitmap 来渲染视觉效果。有没有更快的方法在图像或我可以在 Canvas 上自由移动的任何其他框架元素上显示视觉效果?

xaml:

<Canvas>
<Image Height="505" HorizontalAlignment="Left" Margin="0,0,0,0" Name="_MapImage" Stretch="Fill" VerticalAlignment="Top" Width="700" MouseLeftButtonDown="_MapImage_MouseDown" MouseWheel="_MapImage_MouseWheel" MouseLeftButtonUp="_MapImage_MouseUp" MouseMove="_MapImage_MouseMove" />
</Canvas>

代码:

_renderRoutesBitmap = new RenderTargetBitmap((int)(_MapImage.Width), (int)(_MapImage.Height), 96, 96, PixelFormats.Default);

for (int i = 6; i < 8; ++i)
{
if((layerCode / (int)Math.Pow(10,i) % 2) == 1)
_renderRoutesBitmap.Render(_layers[i]); //takes too much time
}
_RouteImage.Source = _renderRoutesBitmap;

最佳答案

前段时间我不得不做类似的事情,我必须编写自己的 GIS 应用程序。我不得不绘制成千上万的绘图视觉效果,我的发现是 RenderTargetBitmap 不是位图操作的好选择,因为它没有使用图形硬件加速。Silverlight 有一个更合适的类; WriteableBitmap 允许您的应用程序直接写入 GPU 缓冲区。唯一的问题是它仅适用于 Silverlight。如果你想坚持使用位图进行操作,那么你可以使用 WPF 的 WriteableBitmap 等效项,即 WriteableBitmapEx 可用 here .

由于您总共只有 6 个绘图视觉对象,我建议您转而使用更高级别的 UI 元素,例如形状等。

关于c# - 在 WPF 中快速渲染绘图视觉效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com