问题标签 [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 FormattedText 在高分辨率图像中随机消失
我需要创建 600 个 DPI “三折”图像,其尺寸为 25.5"x11"(是 Letter 页面大小的三倍)。为此,我通过 DrawingVisual、DrawingContext 和 RenderTargetBitmap 类使用 WPF Imaging。
当我以较低的分辨率(例如 400 DPI 或更低)生成图像时,所有文本都按预期显示在正确的位置。但是,一旦我将图像分辨率提高到 500 DPI 级别或更高,位于图像最右侧的某些文本将简单地消失,而其他相对定位的文本/形状则可以完美打印。最疯狂的部分是,当我尝试不同的 DPI 时,会出现/消失不同的文本。在一个测试案例中,600 DPI 缺少一组绘制的 FormattedText,650 DPI 缺少另一组绘制的 FormattedText,700 DPI 打印一切正常!
我用下面的代码片段重新创建了这个问题。按原样运行(600 DPI),你得到的只是一张非常大的白色图像。将 Dpi 常数更改为 400 或更低,它可以很好地打印文本。
请注意,我已尝试转动 DrawingVisual 类中的许多旋钮(例如 VisualBitmapScalingMode、VisualTextRenderingMode、VisualEdgeMode 等),但无济于事。我对这些设置的大部分研究发现它们是纠正“模糊”文本而不是消失文本的有用设置。我对 DrawingVisual 或 DrawingContext 的任何指南/捕捉设置也没有运气。
请注意,我已经在 Win7 和 Win2008R2 上重新创建了此问题,并且我的应用程序正在运行 .NET 4.5。
有任何想法吗?
c# - 可见区域ScrollViewer的WPF快照
我知道如何在 WPF 中制作快照。
但是现在我有这个 600px 宽和 1000px 内容的 ScrollViewer。当我使用此代码并且我的 HorizontalOffset 为 0(所以我根本没有滚动)时,一切都很好,我得到了 ScrollViewer-Control 的图像就好了。
但是,当我滚动 ScrollView 并以相同的方式制作快照时。截图全乱了。
如何像使用滚动视图的“0 到 600”区域一样制作滚动视图内容的可见“400 到 1000”区域的快照?
c# - 在 Windows Phone 8.1 中将 IBuffer 转换为字节数组,如何?
我正在为 Windows Phone 8.1 编写应用程序。
我需要将 UIElement 保存为图像文件(我更喜欢 JPG 或 PNG)。我正在使用 RenderTargetBitmap 类来执行此操作。在我的 UIElement 上调用 RenderAsync 方法后,我创建了一个 IBuffer,其中包含我的 RenderTargetBitmap 的 GetPixelsAsync() 方法的结果。
现在我需要调用 ToArray() 方法将我的 IBuffer 转换为字节数组,以使用 BitmapEncoder 之类的东西保存我的图像,但似乎在 Windows Phone 8.1 上没有任何用于 IBuffer 的 ToArray() 方法,而在 Windows 上8.1 存在。
我该如何解决这个问题?
c# - 有什么方法可以将通过编程方式创建的 UIElement 保存在图像文件中?
我正在尝试在 Windows Phone 8.1 (C#) 应用程序的 JPG/PNG/BMP 图像中保存以编程方式创建的 UIElement。
我正在使用 RenderAsync() 方法使用类 RenderTargetBitmap,但它仅适用于在 XAML 代码中创建的 UI 元素。当我在直接在 C# 中创建的 UI 元素上使用它时,出现以下异常:“System.ArgumentException(值不在预期范围内。)”
我做错了什么还是这个类不允许渲染以编程方式创建的 UIElement(s)?有没有办法在 Windows Phone 8.1 上做到这一点?谢谢!
这是我使用的代码:
c# - 如何在 WPF 中保存控件的非模糊图像?
我正在使用 DrawingContext 来绘制图像。然后我将结果渲染到 RenderTargetBitmap。我还将画布渲染到相同的 RenderTargetBitmap。尽管像素边界在屏幕上很清晰,但在保存时它们会变得模糊不清。
在下面的屏幕截图中,您可以看到问题(BitmapScalingMode = NearestNeighbor)。
这里是 BitmapScalingMode = HighQuality。它更光滑但不清脆和干净。
这是我的代码的相关部分。您可以看到我尝试在多个位置设置 RenderOptions 但似乎没有效果。
c# - 执行 RenderTargetBitmap 后 Viewport3D 不更新视觉效果
使用 RenderTargetBitmap.Render 调用渲染 Viewport3D 似乎会导致 Viewport3D 不再更新其视觉内容。尽管如此,交互操作仍然有效,例如悬停和单击。
我创建了一个示例,其中我有一个包含按钮的视口。然后我使用 RenderTargetBitmap 渲染视口。在此渲染之后,我尝试切换按钮的可见性,但按钮的视觉效果不再更新,这是出乎意料的。然而,当它被折叠时,不可能像您期望的那样单击该按钮。将可见性切换回可见允许我再次单击该按钮,因此似乎只有视觉效果不再正确处理。
似乎视口丢失了它应该使用的正确缓冲区,并且无论如何都继续显示旧版本。我希望视口像在渲染调用之前一样不断更新其视觉效果,有什么我在这里遗漏的想法吗?
我已经在 bitbucket 上上传了演示器,源文件可以在这里查看: Sourcecode
演示器也可用作 VS2010 解决方案: 下载解决方案
如果您需要任何其他信息,请告诉我,我会尽可能详细地回答您的问题。
c# - 将画布数据保存到图像文件输出是错误的
我想将图像放在父图像上并保存最终图像。所以我在画布中使用了父图像,并在画布中添加了子图像。
问题:
- 在我加载缩略图(子)图像之后,如果我单击父图像,则缩略图(子)图像变得不可见。
- 我无法使用
mouse left button up
发行版将缩略图(子)图像精确地放置在父图像上。 - 我无法使用实际图像高度和宽度保存最终图像。最终保存的图像输出高度和宽度是错误的。
请指导我解决上述问题。
特殊效果 XAML:
SpecialEffects.cs 代码:
c# - 如何在 WPF C# 中将 DrawingVisual 转换为位图
我正在使用以下代码在 DrawingVisual 上绘制文本。我听说您可以使用RenderTargetBitmap
将其转换为位图以获得更好的性能。
最后我使用下面的代码将文本添加到Canvas
:
我不知道应该在哪里使用RenderTargetBitmap
转换为 BMP 以及如何将其添加到 MyCanvas?
在RenderTargetBitmap
文档示例中,我发现了这一点:
但我不知道如何在我的代码中实现这一点。
c# - 在后面的代码中使用 RenderTargetBitmap 渲染 Viewport3D 时出现黑色图像
我有一个旋转图像的 viewport3D。我必须在后面的代码中构建它。如果我将视口放在网格中,一切正常。但是,如果我尝试使用 RenderTargetBitmap 渲染它,就会出现一些问题,并且我总是得到一个空图像。
这是我的代码:
我在 InitializeComponent() 之后调用此函数。
wpf - 如何从 WPF 图像控件中获取渲染图像
每个WPF 图像控件都有RenderTransform属性,该属性将Scale、Skew、Rotate和更多的 Transformation 设置为图像。调用RenderTransform属性后,如何将渲染图像放入BitmapImage或RenderTargetBitmap类或任何其他类?
这是我的代码: