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

windows-runtime - WinRT RenderTargetBitmap 似乎不服从转换

我正在尝试将一些 UIElements 渲染到 RenderTargetBitmap。我有一个图像,它使用 TranslateTransform 在基本元素周围移动。当我使用 RenderTargetTransform.RenderAsync 时,图像是在没有转换的情况下呈现的。

我尝试改用 Margin,但 RenderTargetBitMap 也不遵守。

我可以让它真正使用那个变换吗?

这是代码,XAML 部分:

...以及背后的代码:

这就是我在屏幕上看到的内容(见左侧和顶部的黑色部分): 屏幕内容 ...这将转到保存的文件(由 RenderTargetBitMap.RenderAsync 创建): 这是渲染的结果

0 投票
2 回答
1130 浏览

c# - WPF RenderTargetBitmap 与 Viewport3D

我正在使用 XamlReader 加载 XAML UserControl,然后尝试使用 RenderTargetBitmap 将其转换为图像。

使用简单的 UserControl 就可以正常工作。

但是如果我使用这个 Viewport3D,它就不起作用。创建的图像没有 3D 部分...:

我将 UserControl 转换为图像的方法:

我错过了什么吗?

0 投票
1 回答
862 浏览

wpf - 如何在图像中呈现带有 RenderTargetBitmap 的 FormattedText?

我在谷歌上找不到答案。

我有很多字符串要在画布上呈现。每个字符串都将使用从 ItemsControl 调用的字符串转换器中的 FormattedText() 方法创建。

代码的问题在于,它需要 RenderTargetBitmap() 中的一个大得离谱的宽度和高度来显示不同位置的所有字符串,即使每个字符串的实际宽度约为 700,实际高度为 40。(看起来像虽然 RenderTargetBitmap() 需要足够大,不仅可以容纳字符串,还可以容纳该字符串在绘图上下文中的位置)。

您如何创建一个仅包含格式化文本的正确实际高度和宽度的单个格式化文本字符串的图像,然后将该图像正确定位在“左上角”点?

从 ItemsControl 调用的转换器定义为:

附录:

我写了这个解决了这个问题,但没有回答我的问题。(删除了 gt 和 lt 符号)。

  1. 将 itemscontrol 更改为包括:

    ItemsControl.ItemContainerStyle Style TargetType="{x:Type FrameworkElement} Setter Property="Canvas.Top" Value="{Binding topleft.Y}" Setter Property="Canvas.Left" Value="{Binding topleft.X}" Setter属性="高度" 值="{绑定英尺高度}"

  2. 移除了转换器的所有定位。转换器现在读取为

    /li>
0 投票
2 回答
200 浏览

image - 将 WF 4 工作流程另存为图像

问题是我正在从一个 shell 应用程序动态打开工作流设计器,并且我没有对 Canvas 的引用。我可以将 WF4 保存为图像,但图像没有正确保存并且包含左和上边距。我关注了许多文章以使其正常工作,但没有成功。我也参考了下面的文章。

将画布保存为 png C# wpf

我正在使用以下功能。我对画布没有任何参考。

请帮助解决这个问题。

0 投票
0 回答
138 浏览

c# - 仅为所需的 Canvas Size 将 Canvas 保存到 BMP

我有一个画布,里面有不同的物体,可以移动..

然后我想将画布保存到 BMP 或 PNG .. 没问题,它可以工作。

但是如果画布之外有一些对象,输出图像将具有所需的画布大小,但在外部元素内。

我想准确地打印所需的尺寸,不多也不少.. :)

我认为这是一个衡量和安排问题,但不知道它是如何工作的..

遵循代码和“错误图像导出”的示例图像!

所有在垂直白线的右侧不应该出现在图片上!

在此处输入图像描述

0 投票
1 回答
346 浏览

c# - BackgroundTask & XamlRenderingBackgroundTask & RenderTargetBitmap

我正在开发一个 Live Tile APP 以在 Live Tile 上显示当前的网络状态。

我已经有一个工作的 XamlRenderingBackgroundTask,我可以从 XML 文件加载自定义平铺模板,然后使用 RenderTargetBitmap 将它渲染到 PNG 文件。

但是如果我启动 APP 并注册后台任务,我必须等到 BackgroundTask 开始看到更新的动态磁贴。

据我所知,无法从主应用程序中使用此代码。RendertargetBitmap 需要来自 XAML 树或 XamlRenderingBackgroundTask 的元素。

那么,我如何在注册任务后直接更新 Live Tile 呢?

0 投票
2 回答
323 浏览

c# - 尝试将 ListViewItem 呈现到 UserControl 内的位图会崩溃

我正在开发一个通用应用程序,在该应用程序中我试图从选择中生成位图,以便我可以显示所选对象从 SettingsFlyout 内部移动到屏幕上的新位置的精美动画,同时 SettingsFlyout 与列表视图被转换为“详细信息”。

我在其他地方看到过这段代码,但它似乎不起作用。我得到一个 System.ArgumentException,后跟“值不在预期范围内”。在 RenderAsync 调用中。知道为什么会这样吗?单步执行代码显示 ListViewItem 已正确找到,但渲染它不起作用。我看到另一个提到 ItemContainerGenerator 但它产生了 NullReferenceException。

以前有人试过这个吗?我想要做的是简单地复制列表视图的选定项并在另一个网格上使用它。让我知道是否需要使用更多信息编辑问题。

编辑:根据另一个开发人员的建议,我尝试从同一页面渲染 pageRoot 堆栈面板和另一个 TextBox,但也失败了。我认为问题在于渲染本身 - 我可以用其他代码替换此代码吗?

编辑:开发人员建议调度程序可能是一个问题,结果调度程序在通用应用程序中的处理方式不同,所以我尝试通过它来使用它 - 没有改变

0 投票
0 回答
206 浏览

wpf - GifBitmapEncoder 和 RenderTargetBitmap 创建一个空的 gif

我正在尝试通过渲染画布和动画来创建 gif。但是,gif 始终为空。你必须对画布做一些特别的事情来渲染它吗?

0 投票
1 回答
993 浏览

c# - RenderTargetBitmap 而不将其放在 UI 上

我想在 Visual Studio 2013 中创建一个通用应用程序,该应用程序从Canvas使用代码动态生成的图像创建图像。如果我在 UI 上显示画布(Grid例如,在 a 中)就可以了。如果我不显示画布,应用程序会崩溃并显示以下消息:

值不在预期范围内。

有我使用的代码:

我不想在 UI 上显示画布,因为我打算使用BackgroundTask.

这是我的示例项目

0 投票
0 回答
1024 浏览

c# - RenderTargetBitmap : 无法释放/处置句柄

对不起,我的英语不好。

我想将 DrawingVisual 渲染为位图,以便创建 DiffuseMaterial。我这样做:

但...

  • 如果我使用 GetDiffuseMaterial 方法 10000 次,应用程序就会停止。这是“正常的”,因为每个应用程序最多可以有10000 个 GDI 句柄,而 RenderTargetBitmap 每次创建时使用 1 个 GDI 句柄。
  • 解决此问题的方法是释放 RenderTargetBitmap 对象。但我没来得及做。我试过这个(在 mat.Freeze() 和 return mat; 之间):

    /li>
  • 另一种方法是只有一个 RenderTargetBitmap 并将其作为参数提供给 GetDiffuseMaterial。
    但是如果我调用两次 GetDiffuseMaterial,我将有两个相同的材质,因为句柄是共享的,材质采用最后修改。(所以即使文本参数不一样!)

我看不到用 RenderTargetBitmap 做我想做的另一种方法。
注意:GetDiffuseMaterial 可以调用 100 万次...

RenderTargetBitmap 是我发现从字符串文本创建 DiffuseMaterial 的最快方法。其他技术真的很慢:使用带有 TextBlock 的 VisualBrush,使用 DrawingBrush,... 例如:使用 RenderTargetBitmap 对 GetDiffuseMaterial 的 5000 次调用至少比其他技术快 10 倍。

谢谢您的帮助。