问题标签 [rendertargetbitmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
15140 浏览

wpf - 在屏幕外创建 WPF 元素并渲染到位图

我不明白为什么这不起作用,或者我需要什么才能让它起作用。

为了重现,创建一个简单的 WPF 应用程序并替换主窗口的构造函数:

这会产生一个空图像。如果我将 RTB 作为 PNG 保存到磁盘,它的大小正确但透明。

但是,如果我使用屏幕上显示的视觉效果来执行此操作,则效果很好。

如何将我在屏幕外构建的视觉效果渲染到位图?

0 投票
6 回答
9055 浏览

c# - RenderTargetBitmap 和 Viewport3D - 质量问题

我想将 3D 场景从 Viewport3D 导出​​到位图。

执行此操作的明显方法是使用 RenderTargetBitmap - 但是当我这样做时,导出位图的质量明显低于屏幕上的图像。在互联网上环顾四周,似乎 RenderTargetBitmap 没有利用硬件渲染。这意味着渲染是在第 0 层完成的。这意味着没有 mip-mapping 等,因此会降低导出图像的质量。

有谁知道如何以屏幕质量导出 Viewport3D 的位图?

澄清

尽管下面给出的示例没有显示这一点,但我最终需要将 Viewport3D 的位图导出到文件中。据我了解,这样做的唯一方法是将图像转换为从 BitmapSource 派生的东西。下面的 Cplotts 显示使用 RenderTargetBitmap 提高导出质量可以改善图像,但由于渲染仍然在软件中完成,因此速度非常慢。

有没有办法使用硬件渲染将渲染的 3D 场景导出到文件?当然这应该是可能的?

你可以看到这个 xaml 的问题:

而这段代码:

0 投票
3 回答
5457 浏览

wpf - ContentControl + RenderTargetBitmap + 空图像

我试图创建一些图表图像,但从未在屏幕上显示这些图表。我已经做了很长一段时间了,尝试了很多不同的东西,但似乎没有任何效果。如果我首先在窗口中显示图表,则代码可以完美运行,但是如果我不在窗口中显示它,则位图只是带有黑色边框的白色(不知道为什么)。

我尝试在渲染之前将图表添加到边框并为边框提供绿色边框。在位图中,我看到绿色的borderBrush,然后是黑色边框和白色背景,但没有图表。该图表不包含在黑色边框中,所以我不知道它来自哪里。

我尝试在不调用 window.Show() 的情况下将图表添加到窗口,但我再次得到黑色边框和白色背景。但是,如果我调用 window.Show() 位图包含图表。

我尝试过使用这里所解释的绘图视觉,结果相同。

这是代码(不包括将元素添加到边框或窗口):

注意:图表是一个 ContentControl。

无论如何我可以在不先在窗口中显示图表的情况下渲染图表吗?

0 投票
2 回答
3627 浏览

wpf - RenderTargetBitmap + Resource'd VisualBrush = 不完整的图像

我在“Visual to RenderTargetBitmap”问题上发现了一个新的转折点!

我正在为设计师呈现 WPF 内容的预览。这意味着我需要获取 WPF 视觉对象并将其渲染为位图,而不会显示该视觉对象。有一个很好的小方法来做它喜欢在这里看到它

工作正常,除了一件小事......如果我的 FrameworkElement 有一个 VisualBrush,那个画笔不会出现在最终渲染的位图中。像这样的东西:

其他所有内容都呈现到位图,但 VisualBrush 不会显示。明显的谷歌解决方案已经尝试过并且失败了。即使是那些特别提到 RTB 位图中缺少的 VisualBrushes 的那些。

我有一个偷偷摸摸的怀疑,这可能是由于它是一个资源,并且那个惰性资源没有被内联。因此,一种可能的解决方法是,以某种方式(???)在渲染之前强制解析所有静态资源引用。但我完全不知道该怎么做。

有人对此有解决办法吗?

0 投票
0 回答
870 浏览

wpf - 将 RenderTargetBitmap 与 Viewport3D 一起使用

我使用 Viewport3d 并使用继承的 UIElement3D 类显示我的 3D 元素......现在我想制作我的视口的不同图像(不同的视图)。这意味着我必须在运行时创建一个新的 viewport3d 并将我的特定视图应用于其上的图像..

看下面的代码:

第一张图片 (test_xamlviewport.png) 显示正确,但我创建自己的 Viewport3D 对象并打印它的第二张图片是空的 (test_localviewport.png)。

我如何强制渲染我的 UIElement3D 对象,或者如果我创建一个新的视口而不是打印现有的 XAML 视口实例,为什么它不起作用?

在这里你可以找到一个重现我的问题的示例解决方案 http://cid-df67ca3f85229bd1.office.live.com/self.aspx/Development/WpfApplication2.zip

问候罗兰

0 投票
1 回答
1173 浏览

asp.net - 在 ASP.NET 中生成 WPF UIElement 的位图

我正在尝试从 WPF 边框生成位图。整个过程位于运行 .net 4.0 的 asp.net 应用程序(当然是服务器端)中。

问题是,生成的图像是空的。有谁知道为什么?

这是代码。

结果非常糟糕,正如我所说的那样,它返回了具有正确宽度和高度的图像,但它是空的,所以我想我不会用线程位搞砸。

0 投票
1 回答
1347 浏览

wpf - 将 WPF 与硬件渲染结合使用,而不是 RenderTargetBitmap

我构建的 WPF 应用程序有一个包含各种 UIElement3D 对象的 Viewport3D。现在我想将某个视图的高分辨率快照保存到文件中。我过去曾尝试过 RenderTargetBitmap,但由于以下缺点,我不喜欢这种方法:

  • 内存泄漏(至少对于 .NET 3.5 SP1)。然而它应该用 4.0 解决,但我还没有测试过。
  • 使用抗锯齿和像素着色器时,软件渲染不会提供与硬件渲染相同的结果。
  • RenderTargetBitmap 需要大量时间(例如 10 秒)来形成图像,而不是在屏幕上显示所需的几分之一秒。

所以我想知道是否可以在新的控件/窗口(最好是屏幕外)中使用包含快照副本的 VisualBrush,然后使用 DirectX 或 GDI 技术通过前端或后端缓冲区获取内容。我可以想象超出显卡能力的分辨率可能是一个问题,但这可以通过抓取多个子图像并将它们拼接在一起来解决。那么有人对这个话题有一些想法吗?

请记住,我已经阅读过有关 DirectX、XNA、SlimDX、GDI+、BitBlt 等的信息,但这就是我在这些问题上的所有经验。目标平台是 Windows XP+。如果解决方案是可能的,但不是在 XP 上,我也想知道。

此致,

扬·范德波尔

0 投票
2 回答
1940 浏览

wpf - 无法将像素着色器渲染到 RenderTargetBitmap!请帮忙!

我编写了一个非常简单的 WPF 应用程序来测试将具有关联像素着色器的控件呈现到 RenderTargetBitmap 的能力。然后我将位图写入文件(jpeg)。控件被渲染到位图上,但是像素着色器效果不应用于控件。

代码和 XAML 如下:

XAML:

0 投票
1 回答
3772 浏览

wpf - 如何将 PixelFormats.IndexedX 与 RenderTargetBitmap 一起使用?

我正在寻找使用视图将此位图设置为背景的DrawingVisual位图(在示例中为视觉对象),如下所示:RenderTargetBitmapCanvas

PixelFormats.Default用作 的最后一个参数时RenderTargetBitmap,图像按预期呈现。但是,当我选择PixelFormats.Indexed2(或任何.PixelFormats.IndexedXbmp.RenderCanvas

如何使用IndexedX像素格式RenderTargetBitmap?还是有其他方法可以减少图像的内存占用?它只使用三种颜色,因此使用调色板而不是 32 位 RGB 似乎是可行的方法。

0 投票
1 回答
1403 浏览

wpf - 向 RenderTargetBitmap 添加可选的硬件加速

是否有替代 RenderTargetBitmap 可以生成与 Image.Source 一起使用的图像并且在 .NET 3.5 sp1 中进行硬件加速的替代方法?.NET 4.0 的答案很好,但我可能无法使用它们。

如果人们发现它会有所帮助,他们应该投票赞成......就像我一样。

http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions/suggestions/1303525-add-optional-hardware-acceleration-to-rendertarget