使用未渲染的控件的视觉画笔?

2023-12-02

我现在正在考虑一个想法,但碰壁了。我正在使用控制台应用程序在内存中创建一个视觉控件(准确地说是 DevExpress 图表控件),然后我尝试使用 VisualBrush 将该控件保存到图像中,但它不起作用,因为(我假设)该控件没有被吸引到屏幕上。

我已将我的代码放在下面,以便您知道我现在在哪里。有谁知道我如何使用控制台应用程序将此控件保存到图像(最好是 jpg,但任何东西都可以...)?我真的不想将它渲染到屏幕上,哪怕是一毫秒,只是为了能够保存它......

static void sl_CreateDetail(FrameworkElement chartControl1, CreateAreaEventArgs e)
{
        var brush = new VisualBrush(chartControl1);
        var visual = new DrawingVisual();
        DrawingContext context = visual.RenderOpen();

        context.DrawRectangle(brush, null,
            new Rect(0, 0, chartControl1.ActualWidth, chartControl1.ActualHeight));
        context.Close();

        var bmp = new RenderTargetBitmap((int)chartControl1.ActualWidth,
            (int)chartControl1.ActualHeight, 96, 96, PixelFormats.Pbgra32);

        bmp.Render(visual);
        e.Data = bmp;
}

在渲染控件之前,您必须通过调用手动进行其布局Measure and Arrange。这要求您指定所需的控件大小,例如通过显式设置其 Width 和 Height 属性。

不需要VisualBrush和DrawingVisual,可以直接将控件渲染到RenderTargetBitmap。

chartControl1.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
chartControl1.Arrange(new Rect(0, 0, chartControl1.Width, chartControl1.Height));
chartControl1.UpdateLayout();

var bmp = new RenderTargetBitmap((int)chartControl1.ActualWidth,
    (int)chartControl1.ActualHeight, 96, 96, PixelFormats.Pbgra32);

bmp.Render(chartControl1);

如果控件在布局期间(在“测量”中)计算首选尺寸,您也许可以使用它的所需尺寸用于渲染的属性。

chartControl1.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
chartControl1.Arrange(new Rect(new Point(), chartControl1.DesiredSize));
chartControl1.UpdateLayout();

另请注意,渲染线程的公寓状态必须是STA。在控制台应用程序中,您可以简单地应用STA线程属性到 Main 方法。

[STAThread]
static void Main(string[] args)
{
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用未渲染的控件的视觉画笔? 的相关文章

  • 如何设置和更改 WPF 中的文化

    我有一个 NET 4 0 WPF 应用程序 用户可以在其中更改语言 文化 我只是让用户选择一种语言 创建相应的 CultureInfo 并设置 Thread CurrentThread CurrentCulture cultureInfo
  • 如何动态更改 WPF 中 DataGridTextColumn 绑定上的转换器?

    我真的不明白 WPF 和 XAML 并且继承了一些写得很糟糕的代码 所以我可能会扼杀它 但这里是 我继承了一个绑定到 Person 对象列表 在代码后面 的 DataGrid 其中必要的 DataGridTextColumn 在 XAML
  • 为什么背景图片没有填满整个div

    我有以下代码显示SPAN里面一个DIV然后另一个DIV在它下面显示一些文本 我遇到的问题是当我调整浏览器大小时 文本和背景图像变得不合适 这是图像未填满的屏幕截图DIV 另外 当我调整大小时 文本全部错位 这是 HTML div div d
  • WPF 位图到图像的转换仅显示黑色图像

    我确实在以 wpf Image 形式显示图像 uEye Cam 时遇到一些问题 显示的 图像全黑 下面是我使用的代码 Get Cam Bitmap Image var cam new uEye Camera cam Init cam Mem
  • WPF 找不到某些字体

    为什么会这样Media Fonts找不到 Arial Rounded MT Bold foreach var f in System Windows Media Fonts SystemFontFamilies if f Source Ar
  • WPF:名称空间中不存在该名称[重复]

    这个问题在这里已经有答案了 我正在使用 VS2013 构建 C WPF 应用程序 并且具有以下类定义 在正在运行的应用程序的同一程序集中 namespace MyNamespace public class MyKey public MyK
  • WPF 通过宽高比调整 UserControl 的大小

    我有一个 UserControl 并且该 UserControl 必须根据宽高比调整大小 这意味着 宽度 高度 2 1 目前我正在使用这段代码 protected override Size ArrangeOverride Size arr
  • DataGrid 是 WPF 中的必需品吗?

    我看到很多讨论正在进行 人们询问 WPF 的 DataGrid 并抱怨 Microsoft 迄今为止还没有在其 WPF 框架中提供 DataGrid 我们知道 WPF 是一项出色的 UI 技术 并且具有 ItemsControl DataT
  • WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢

    我注意到 如果我为任何 CPU x64 构建 WPF 应用程序 则与在 x86 上启动 在发布和调试模式下 相比 启动 大约 20 秒 或加载新控件所需的时间要长得多 VS 的内部或外部 即使是最简单的 WPF 应用程序也会出现这种情况 该
  • WPF RichTextBox 中的只读 Run 元素?

    我可能完全是在想象这一点 但我可以发誓有一种方法可以使 RichTextBox 中的各个 Run 或 Parapgraph 元素成为只读 我还可以发誓 几周前我自己尝试了一种方法 并对结果感到满意 我隐约记得它看起来像这样
  • DropDelegate Safari 拖动图像

    我正在尝试实施DropDelegate模式以允许将图像拖到我的视图中并加载它们 这对于取景器中的图像效果很好 但是当将图像从 safari 拖到我的视图中时 这不起作用 我注意到typeIdentifier or UTType所提供的信息
  • 将字节转换为图像 ASP.NET c# 并在 Image1.Url 中使用它

    我有一个 WEB APP 它是一个网络摄像头应用程序 它拍摄图像并以字节形式存储到数据库中 话虽这么说 我也不想保存拍摄的图像并将其保存在任何类型的文件夹中现在 显示捕获的图像以供我保存并再次查看的唯一方法是 我有一个在单击捕获图像时触发的
  • Fabricjs HTML5 Canvas:为什么图像大小调整得如此糟糕?

    当我将 775 x 775 图像添加到 Fabricjs 画布并将其大小调整到大约 90 x 90 时 图像的质量大大降低 但如果我添加相同的图像作为 img 并按比例缩小 它保留了其质量 为什么画布图像的质量变得这么低 我怎样才能使画布图
  • 在php中将png合并到多边形上

    我很困惑 我尝试简单地绘制一个多边形并放在上面 就像一个带有透明度的 png 图层一样 没有任何成功 一次背景是黑色的 一次多边形变得不可见 这是我的 php 代码 header Content type image png The png
  • Wpf ScrollViewer 滚动量

    是否可以更改 WPF ScrollViewer 滚动的量 我只是想知道是否可以更改滚动查看器 以便在使用鼠标滚轮或滚动查看器箭头时可以更改增量滚动量 简短的答案是 如果不编写一些自定义滚动代码 就无法做到这一点 但不要让这吓到你 这并不那么
  • 如何重新启动 WPF 应用程序?

    如何从代码重新启动 WPF 应用程序 在 Windows 窗体中存在 Application Restart 但出于某种原因 Microsoft 决定不在 WPF 中添加此方法 我讨厌 WPF 和 Windows 窗体之间的不兼容 喜欢 w
  • Genymotion 无法识别 SD 卡上的图像

    所以我一直在玩 Genymotion 喜欢使用它 但一直无法弄清楚如何将图像导入 Android Gallery 应用程序 因此我可以测试另一个应用程序 当前在 Galaxy Nexus 上运行 Android 4 3 尝试通过 adb 和
  • 打印 WPF 位图图像

    打印位图图像的最佳方法是什么 我有 System Drawing 背景 所以我正在考虑将其转换为位图 然后打印它 但我认为可能有更好的方法 Thanks 根据 Drew 的回答 最好测量并安排传递给 PrintVisual 方法的容器 这将
  • 将阿拉伯语文本导出为图像

    我有一堆 UTF 8 格式的阿拉伯文本 我尝试显示此设备的设备不支持显示阿拉伯语文本 因此 我需要将文本转换为图像 我想将每行文本保存为具有特定宽度的图像 我还需要使用特定的字体 做这个的最好方式是什么 有人知道这里有一个有用的工具吗 到目
  • 如何用纯色填充位图?

    我需要使用唯一的 RGB 颜色创建 24 位位图 分辨率 100x100 像素 并将生成的图像保存到磁盘 我目前使用的是SetPixel http msdn microsoft com en us library 6c7eyzyb aspx

随机推荐

  • 如何在 vscode 中查看全角代码

    我想在 VS Code 中编码时使用完整视口 但是当我展开 VS Code 窗口时 这些行并没有扩展 有修复吗 使用的正确配置 为了配置 V S 代码使得代码行在 你的编辑器只会在视口的末尾换行 并且 以前从未如此 您需要将正确的值分配给
  • 如何在使用 playwright-python 运行代码结束时保持浏览器打开?

    我想使用 playwright python 自动填写一些表格 然后在提交之前仔细检查填写内容 但它总是在代码运行结束时关闭浏览器 即使我使用了handleSIGHUP False handleSIGINT False handleSIGT
  • Espresso 测试被后台线程阻止。应用程序不空闲异常:“AppNotIdleException。”

    我的 android espresso 单元测试由于某些后台线程不空闲而被阻止 我如何找出哪个线程正在阻止我的应用程序执行 android support test espresso AppNotIdleException Looped f
  • 可以从现有的 java/scala 接口和数据类型生成 .thrift 文件吗?

    有没有一种简单的方法可以采用现有的 Java scala 数据类型和 API 接口并生成相应的 thrift 文件 让 Thrift 生成server数据结构具有过度侵入性 因为它会产生以下后果 我无法注释我的数据结构 例如 XML JSO
  • 如何仅在另一个元素内部时选择一个元素?

    我有一个关于 CSS 选择器的问题 我如何选择一个 div 仅当其位于 ul 有类名saft 这个 CSS 类在其他地方使用 我不想到处改变样式 div ul class saft li div class textSlide div li
  • 使用量角器 js 剪贴板中的文本

    如何使用量角器复制特定文本 我想使用此命令加载要粘贴的文本 return browser actions sendKeys Keys CONTROL v perform Sample 加载我的文本 test 然后使用此命令粘贴 test 我
  • 如何测量 Stackdriver 上的 Firestore 读写计数

    我需要监控 Firestore 数据库的实时读 写计数 我已经使用指标创建了仪表板 所附图像显示了当前配置 但是 这会显示速率 每秒 如何计算实际计数 或者是否有不同的聚合对齐器 如果您想将 计数 添加到现有图表中 请按照以下步骤操作 在仪
  • 如何使移动键盘外观与 div 发生碰撞而不是绝对将其自身定位在其上方?

    我正在开发一个简单的聊天组件 但遇到一个问题 在移动设备上 如果我单击文本框发送消息 而不是弹出其上方的消息列表 虚拟键盘会将自己绝对定位在它 这是不可取的 因为我希望用户在键入消息时能够看到最新消息 但是 我不知道如何纠正这种行为 而且我
  • 打算播放 YouTube 播放列表 [重复]

    这个问题在这里已经有答案了 我想从我的应用程序启动 YouTube 播放列表 对于单个视频来说这是显而易见的 startActivity new Intent Intent ACTION VIEW Uri parse http www yo
  • 从 SQL 到 MS Access 查询数据:本地表与传递表

    我创建了一个应用程序 它使用以下逻辑将数据从 SQL 查询到我的 MS Access 应用程序 我使用 ODBC 连接执行存储过程 使用此指定为传递查询以在本地提取数据 它看起来像这样 strSQL EXEC StoredProcedure
  • ImageIcon 不会更新具有相同 URL 的新图像

    我想使用 JLabel Icon 来显示来自我网站的图像 http xxx xxx xxx xxx java pic test jpg 我有一个刷新按钮来新建一个新的 JLabel 和 ImageIcon 为了获取最新的图像 程序运行成功
  • matplotlib 中的 Pandas 自动日期时间格式

    我经常在一个图中绘制来自不同来源的多个时间序列数据 其中一些需要使用 matplotlib 格式化 x 轴时 我使用 matplotlibautofmt xdate 但我更喜欢 pandas 的自动格式化 我知道我可以使用手动设置格式set
  • BeautifulSoup 不同的解析器

    任何人都可以详细说明 html parser 和 html5lib 等解析器之间的区别吗 我偶然发现了一个奇怪的行为 当使用 html parser 时 它会忽略特定位置的所有标签 看看这段代码 from bs4 import Beauti
  • 在 jquery DataTables 中跳过一行的渲染

    如果在初始化期间满足条件 我想跳过行渲染 但我不知道到底将其放置在哪里 我应该把它放进去吗fnCreatedRow or fnPreDrawCallback 我怎样才能做到这一点 这是我的代码 var users tbl users tbl
  • Cygnus 启动错误:ClassNotFoundException

    我的环境是CentOS 6 6的VM 我按照中的说明进行操作https github com telefonicaid fiware cygnus blob master doc quick start guide md安装天鹅座 还安装了
  • 如何使用 Yocto 生成适用于 Windows 的工具链?

    关于我的最后一个问题我问如何获得 Qt 工具链 我在 Linux 主机上尝试过 它可以工作 现在我需要知道如何使该工具链在 Windows 平台上工作 或者我需要什么 Yocto 设置来生成 Qt Windows SDK 安装程序 Woul
  • 使用 numpy.vectorize() 旋转 NumPy 数组的所有元素

    我正处于学习 NumPy 的开始阶段 我有一个 3x3 矩阵的 Numpy 数组 我想创建一个新数组 其中每个矩阵都旋转 90 度 我研究过这个answer但我仍然不明白我做错了什么 import numpy as np 3x3 m np
  • virtualenv pip mysqldb mac os X python

    我试过这个http jazstudios blogspot com 2010 07 installing mysql python mysqldb in html提示在 virtualenv 名为dogme 这篇文章指出了两件重要的事情 e
  • 如何在按下后以编程方式关闭 SearchView?

    我有同样的问题 我发现here我将重申这一点 因为该解决方案并不是 100 完全符合我的需要 目前 我的应用程序的操作栏中有一个 SearchView 当我单击搜索图标时 SearchView 会展开 并且键盘会按预期弹出 单击 Searc
  • 使用未渲染的控件的视觉画笔?

    我现在正在考虑一个想法 但碰壁了 我正在使用控制台应用程序在内存中创建一个视觉控件 准确地说是 DevExpress 图表控件 然后我尝试使用 VisualBrush 将该控件保存到图像中 但它不起作用 因为 我假设 该控件没有被吸引到屏幕