问题标签 [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 投票
3 回答
271 浏览

xaml - RenderTargetBitmap 搞乱了 WebView 缩放

我有一个非常简单的 RenderTargetBitmap.RenderAsync 重载破坏 WebView 缩放的重现案例。我在 MainPage 上只有一个 WebView 和一个按钮:

在后面的代码中只有一个简单的事件处理程序

这是调用 RenderAsync 之前页面的样子:

在 RenderAsync 之前

这就是通话后发生的事情:

在 RenderAsync 之后

知道为什么以及如何防止这种情况吗?请注意,只有当我打电话时才会发生这种情况

但如果我在没有缩放的情况下调用重载

编辑:由于我收到的第一个答案,我想澄清为什么纵横比不是这里的问题,而只是为了证明确实存在问题。考虑以下场景 - 非常高的 DPI 屏幕,只需要较低分辨率的屏幕截图 - 即使您使用 RIGHT 比例缩小它,它仍然会弄乱 WebView。此外,对于我的场景,事后手动调整屏幕截图的大小不是一种选择 - 具有缩放尺寸的 RenderAsync 重载要快得多,我真的更喜欢使用该方法。

0 投票
2 回答
1815 浏览

c# - 将 WPF 视觉对象异步渲染到位图

我看到 WinRT RenderTargetBitmap 能够通过“RenderAsync(visual);”异步渲染视觉对象。方法。不幸的是,.net RendertargetBitmap 没有 RenderAsync 方法。.net RenderTargetBitmap 是否有任何解决方法或扩展以允许异步渲染 WPF 视觉效果?提前感谢您的帮助!

0 投票
1 回答
944 浏览

c# - PngBitmapEncoder 创建一个“空”文件

我有一个显示数据的 DVC 图表。我创建了一个按钮来导出图表。

这是代码:

所以我的问题是这可以正常执行,但我的文件基本上是空的。我只有一个 1KB 大小的文件,没有图表。

我查看了 MSDN 文档和其他堆栈溢出示例。他们都遵循这种形式,人们声称它有效。我已经使用调试器运行,并且 renderBitmap 对象在所有必要的属性中都获得了正确的高度和重量值。有任何想法吗?

0 投票
1 回答
4894 浏览

c# - 如何冻结无法冻结的可冻结对象

在我的场景中,我想在后台任务中渲染它之前冻结一个不变的 BitmapCacheBrush。不幸的是,我收到错误“无法冻结此 Freezable”。是否有任何解决方法或hacky方式冻结也不是可冻结的对象?也许可以通过反射设置正确的属性来达到这个目标?提前谢谢你们。

编辑:(我的示例代码按要求)

0 投票
2 回答
469 浏览

c# - 创建未显示的用户控件的快照

我想拍摄尚未显示的 UserControl 的快照。那是我的代码:

当我启动我的应用程序时,此代码会为每个“MyViewModel”运行。“MyViewModel”包含一个“子视图”列表,它们是选项卡的内容,它们包含一个“FunctionKeyBar”,其按钮可以通过使用“F1”到“F12”来激活。但是在创建我的屏幕截图后,我不能再使用 F1 到 F12 了。还有其他问题,比如切换语言。是否有其他方法可以创建尚未出现的控件的快照?

感谢所有回复。

问候本尼

0 投票
0 回答
219 浏览

c# - 如果应用程序不在前台,RenderTargetBitmap.GetPixelsAsync() 会抛出 HResult 0x80004005 “未指定错误”

我在应用程序的 Suspending 事件中保存了 RenderTargetBitmap。如果我打开应用程序并在 Visual Studio 中点击“暂停和关闭”,一切都很好。但是,如果我先进入“开始”屏幕或打开另一个应用程序并等待一段时间,换句话说 - 该应用程序不在前台,则 RenderTargetBitmap.GetPixelsAsync() 方法会抛出此 COMException,并带有 HResult 0x80004005 和“未指定错误”描述。考虑到在实际使用中,当用户从应用程序切换到其他应用程序时会发生暂停,这个错误几乎总是会发生。我正在明确保存的 RenderTargetBitmap 在这一点上不为空,因为我确实检查了这一点。

另外我在开发过程中注意到,有时当我从应用程序切换到其他应用程序然后返回时,即使应用程序没有暂停并立即打开,一些图片也不会出现在 UI 中,就好像它们已被垃圾收集一样。考虑到仍然有引用,这很奇怪。不确定它是否与上述问题有关,但似乎可以。

有没有人遇到过类似的问题?当应用离开屏幕时,这些图像究竟会发生什么?

编辑:

这是一个例子。xml:

后面的代码:

在移动设备上启动应用程序,单击“渲染”按钮。之后按开始将应用程序关闭屏幕,等待一段时间(10 秒即可),然后在 Visual Studio 的调试位置栏中按“暂停和关闭”。观察 COMException。

0 投票
1 回答
348 浏览

wpf - WPF 确保 RenderTargetBitmap 已从后台线程更改中更新绑定值

我在使用 RenderTargetBitmap 时遇到问题,因为在我更改后台线程上的绑定属性后,我无法让它始终获取更新的渲染。

这是我所拥有的:

唉,大约有一半的时间我在用新值更新控件之前获得渲染,另一半它正确更新。

据我了解,WPF 会自动将属性更改通知分派到 UI 线程。如何确保在渲染之前处理完这些发送的通知?如果我确保SomeBoundProperty在 Dispatcher 线程上进行了更新,则此代码可以正常工作,但这对于此特定应用程序来说并不理想。

有什么建议么?

0 投票
0 回答
494 浏览

c# - RenderTargetBitmap 导致内存不足

我以前看到过有关此问题的线程,但我似乎无法找到解决我的问题的方法。我有一个允许用户创建自己的画布的应用程序。假设在这个例子中,用户创建了 150 个 745px x 1045px 的画布。现在有一个功能允许用户将这些全部导出到单独的 PNG 文件中。这是我的方法:

在大约 45 张左右的图像之后,应用程序中断了:renderBitmap.Render(surface); 说: 内存不足,无法继续执行程序。

现在我明白这个过程可能有点占用内存,但我觉得在图像被渲染并导出为 PNG 之后,我应该能够以某种方式处理它,然后再转到下一张图像。我只是不知道该怎么做。任何和所有的建议表示赞赏!

0 投票
3 回答
3583 浏览

c# - 如何将图像转换为图像源

我什至不知道我是否问对了问题;所以提前道歉。我正在将一些 PNG 写入画布,并且我还想同时将这些 PNG 复制到位图。我希望 PNG 出现在位图上与画布上相同的位置。

这是代码片段:

但是,它会在此行引发错误“无法从'System.Windows.Controls.Image'转换为'System.Windows.Media.ImageSource':

如果我能以某种方式将图像转换为 ImageSource,这个错误会得到解决吗?或者我做错了?

谢谢!

0 投票
1 回答
484 浏览

c# - RenderTargetBitmap 似乎没有渲染我的矩形

我有以下代码:

如果我做

然后在窗口上很好地绘制渐变。

我想将此渐变用于其他地方的强度图,因此我需要从中取出像素。为此,我知道我可以将其转换为位图,使用RenderTargetBitmap. 这是代码的下一部分:

为了测试这一点,我这样做:

但是窗户上什么也没有。我究竟做错了什么?