问题标签 [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.
wpf - 在屏幕外创建 WPF 元素并渲染到位图
我不明白为什么这不起作用,或者我需要什么才能让它起作用。
为了重现,创建一个简单的 WPF 应用程序并替换主窗口的构造函数:
这会产生一个空图像。如果我将 RTB 作为 PNG 保存到磁盘,它的大小正确但透明。
但是,如果我使用屏幕上显示的视觉效果来执行此操作,则效果很好。
如何将我在屏幕外构建的视觉效果渲染到位图?
c# - RenderTargetBitmap 和 Viewport3D - 质量问题
我想将 3D 场景从 Viewport3D 导出到位图。
执行此操作的明显方法是使用 RenderTargetBitmap - 但是当我这样做时,导出位图的质量明显低于屏幕上的图像。在互联网上环顾四周,似乎 RenderTargetBitmap 没有利用硬件渲染。这意味着渲染是在第 0 层完成的。这意味着没有 mip-mapping 等,因此会降低导出图像的质量。
有谁知道如何以屏幕质量导出 Viewport3D 的位图?
澄清
尽管下面给出的示例没有显示这一点,但我最终需要将 Viewport3D 的位图导出到文件中。据我了解,这样做的唯一方法是将图像转换为从 BitmapSource 派生的东西。下面的 Cplotts 显示使用 RenderTargetBitmap 提高导出质量可以改善图像,但由于渲染仍然在软件中完成,因此速度非常慢。
有没有办法使用硬件渲染将渲染的 3D 场景导出到文件?当然这应该是可能的?
你可以看到这个 xaml 的问题:
而这段代码:
wpf - ContentControl + RenderTargetBitmap + 空图像
我试图创建一些图表图像,但从未在屏幕上显示这些图表。我已经做了很长一段时间了,尝试了很多不同的东西,但似乎没有任何效果。如果我首先在窗口中显示图表,则代码可以完美运行,但是如果我不在窗口中显示它,则位图只是带有黑色边框的白色(不知道为什么)。
我尝试在渲染之前将图表添加到边框并为边框提供绿色边框。在位图中,我看到绿色的borderBrush,然后是黑色边框和白色背景,但没有图表。该图表不包含在黑色边框中,所以我不知道它来自哪里。
我尝试在不调用 window.Show() 的情况下将图表添加到窗口,但我再次得到黑色边框和白色背景。但是,如果我调用 window.Show() 位图包含图表。
我尝试过使用这里所解释的绘图视觉,结果相同。
这是代码(不包括将元素添加到边框或窗口):
注意:图表是一个 ContentControl。
无论如何我可以在不先在窗口中显示图表的情况下渲染图表吗?
wpf - RenderTargetBitmap + Resource'd VisualBrush = 不完整的图像
我在“Visual to RenderTargetBitmap”问题上发现了一个新的转折点!
我正在为设计师呈现 WPF 内容的预览。这意味着我需要获取 WPF 视觉对象并将其渲染为位图,而不会显示该视觉对象。有一个很好的小方法来做它喜欢在这里看到它
工作正常,除了一件小事......如果我的 FrameworkElement 有一个 VisualBrush,那个画笔不会出现在最终渲染的位图中。像这样的东西:
其他所有内容都呈现到位图,但 VisualBrush 不会显示。明显的谷歌解决方案已经尝试过并且失败了。即使是那些特别提到 RTB 位图中缺少的 VisualBrushes 的那些。
我有一个偷偷摸摸的怀疑,这可能是由于它是一个资源,并且那个惰性资源没有被内联。因此,一种可能的解决方法是,以某种方式(???)在渲染之前强制解析所有静态资源引用。但我完全不知道该怎么做。
有人对此有解决办法吗?
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
问候罗兰
asp.net - 在 ASP.NET 中生成 WPF UIElement 的位图
我正在尝试从 WPF 边框生成位图。整个过程位于运行 .net 4.0 的 asp.net 应用程序(当然是服务器端)中。
问题是,生成的图像是空的。有谁知道为什么?
这是代码。
结果非常糟糕,正如我所说的那样,它返回了具有正确宽度和高度的图像,但它是空的,所以我想我不会用线程位搞砸。
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 上,我也想知道。
此致,
扬·范德波尔
wpf - 无法将像素着色器渲染到 RenderTargetBitmap!请帮忙!
我编写了一个非常简单的 WPF 应用程序来测试将具有关联像素着色器的控件呈现到 RenderTargetBitmap 的能力。然后我将位图写入文件(jpeg)。控件被渲染到位图上,但是像素着色器效果不应用于控件。
代码和 XAML 如下:
XAML:
wpf - 如何将 PixelFormats.IndexedX 与 RenderTargetBitmap 一起使用?
我正在寻找使用视图将此位图设置为背景的DrawingVisual
位图(在示例中为视觉对象),如下所示:RenderTargetBitmap
Canvas
当PixelFormats.Default
用作 的最后一个参数时RenderTargetBitmap
,图像按预期呈现。但是,当我选择PixelFormats.Indexed2
(或任何.PixelFormats.IndexedX
bmp.Render
Canvas
如何使用IndexedX
像素格式RenderTargetBitmap
?还是有其他方法可以减少图像的内存占用?它只使用三种颜色,因此使用调色板而不是 32 位 RGB 似乎是可行的方法。
wpf - 向 RenderTargetBitmap 添加可选的硬件加速
是否有替代 RenderTargetBitmap 可以生成与 Image.Source 一起使用的图像并且在 .NET 3.5 sp1 中进行硬件加速的替代方法?.NET 4.0 的答案很好,但我可能无法使用它们。
如果人们发现它会有所帮助,他们应该投票赞成......就像我一样。