作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找渲染 DrawingVisual
(示例中的可视化)使用 RenderTargetBitmap
到位图使用 View 将此位图设置为 Canvas
的背景如下:
var bmp = new RenderTargetBitmap(2000, 50, 120, 96, PixelFormats.Indexed2);
bmp.Render(visual);
var brush = new ImageBrush(bmp) { Stretch = Stretch.Fill };
Canvas.Background = brush;
PixelFormats.Default
作为
RenderTargetBitmap
的最后一个参数,图像按预期呈现。然而,当我选择
PixelFormats.Indexed2
(或任何
PixelFormats.IndexedX
),我的代码似乎无一异常(exception)地退出了该方法,
bmp.Render
永远不会调用 line,因此图像不会显示在
Canvas
上.
IndexedX
像素格式与
RenderTargetBitmap
?或者还有其他方法可以减少图像的内存占用吗?它只使用三种颜色,所以使用调色板而不是 32 位 RGB 似乎是要走的路。
最佳答案
你不能。 RenderTargetBitmap
仅支持 Pbgra32
像素格式。这是因为 WPF 的渲染系统完全以每像素 32 位的方式工作。这是它生成图像的格式,如果您想渲染它们,这也是它更喜欢图像的格式。 (如果您为它提供任何其他格式的位图,则需要先将其转换为每像素 32 位的表示形式。)
你打算用这个位图做什么?如果您想在 WPF 应用程序中呈现它,无论如何都需要先将其转换为 32bpp 格式,因此如果您尝试以任何其他格式在内部保存它,则可能会使用更多内存。 (您将拥有所谓的内存高效表示和 WPF 实际能够使用的版本。)更不用说在您选择的格式和 WPF 可以使用的格式之间进行转换所花费的额外 CPU 时间。
关于wpf - 如何将 PixelFormats.IndexedX 与 RenderTargetBitmap 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341648/
我是一名优秀的程序员,十分优秀!