面板上的 DrawToBitmap 为空白

2023-12-28

因此,我编写了一个类,它存储一些测试结果信息,然后是一个向用户显示该信息的控件。我想在此类上放置一个打印函数,以全页大小绘制控件并打印它。然而它总是显示空白。该代码将面板视为控件,因为它可能是其他类型的值。我想我一定缺少一些简单的东西。

void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        System.Drawing.Size oldSize = printData.Size;

        printData.Size = new System.Drawing.Size(e.MarginBounds.Width, e.MarginBounds.Height);
        System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Size.Width, printData.Size.Height);

        InvertZOrderOfControls(printData.Controls);
        printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, printData.Size.Width, printData.Size.Height));
        InvertZOrderOfControls(printData.Controls);

        e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
        bitmap.Save(@"C:\Users\jdudley\Documents\File.bmp");
        printData.Size = oldSize;
    }

遵循此建议这个线程 http://www.daniweb.com/software-development/csharp/threads/298209/printing-panel-in-c-desktop-application反转了控件的 Z 顺序,但没有改变任何内容。 添加了保存调用以进行调试。看起来它实际上是在没有任何控件的情况下渲染面板的背景颜色。

编辑:这是在打印的情况下,但我对打印没有任何问题。我的错误在于创建位图。我添加的保存行证明了这一点,因为它创建了一个空白位图文件。


将您的整个活动更改为这样

    void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Width, printData.Height);
        printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(new Point(0, 0), printData.Size));
        e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
    }

Edit

这是我的整个项目。我创建了一个名为 printData 的面板,并添加了两个按钮,并将一个事件附加到 button1。

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    PrintDocument printDocument = new PrintDocument();
    public Form1()
    {
        InitializeComponent();
        pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
    }

    void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Width, printData.Height);
        printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(new Point(0, 0), printData.Size));
        e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
    }


    private void button1_Click(object sender, EventArgs e)
    {
        pd.Print();
    }
}
}

你一定要试试这个,看看它是否有效,否则我今晚将无法入睡!

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

面板上的 DrawToBitmap 为空白 的相关文章

  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • 如何在 C++ 中为指针“this”赋值

    在函数中 如何分配this一个新的价值 您可以分配对象this点于 this XY 但你不能分配直接值this this XY Error Expression is not assignable
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • ASP.NET - Crystal Report Viewer 打印按钮在 ASP.NET 中不起作用

    我正在使用 Visual Studio 2008 但我遇到了水晶报告问题 当我单击打印按钮时 它会将我带到弹出窗口 但未找到页面 弹出的网址是 http localhost aspnet client System Web 2 0 5072
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que

随机推荐

  • 用 C 加密纯文本文件

    我目前正在用 C 语言编写一个从配置文件读取的 Linux 应用程序 该配置文件包含一些我想要加密的数据 因此它不是纯文本 我花了几个小时研究这个问题 但还没有找到可行的解决方案 由于应用程序需要从配置中读取 我需要能够动态对其进行加密和解
  • Doctrine2 同一实体上的两个存储库

    我不知道如何清楚地解释我的问题 但我会尝试 我有一个包含两个模块的项目 Admin User 我还有两个教义实体给我带来了一些麻烦 Shop Products 我的问题是这些实体必须由管理员和用户模块使用 但原则是 一个实体 一个存储库 据
  • 在我的例子中,如何本地化一个简单的 HTML 网站页面?

    I am NOT开发任何包含以下内容的 Web 服务应用程序client侧面和后端server端 如 Java EE 应用程序或 Ruby on Rails 相反 我只是开发一个 HTML网站页面 在此页面上 有两个国旗图像 美国和中国 用
  • 无法根据 WSO2 API Manager 中的消息中介策略调用动态端点/URL

    我正在使用 APIM 3 1 0 我需要根据标头或请求参数重定向 API 我尝试过请求参数但无法调用不同的API 我已使用以下自定义中介策略并将其添加到测试 API 但无法调用不同的 URL 每次调用 API 时 即使我将操作值作为菜单传递
  • Fancybox 在 IE 中加载 iframe 时卡住

    我在使用 fancybox 的 IE 中的 iframe 中加载 PDF 时遇到问题 当我点击链接时 我会得到 gif 加载程序 并且它会永远旋转 控制台或页面或类似内容中没有错误 所有版本的 IE 都会出现此问题 所有其他浏览器都工作正常
  • 保持用户界面最新的最佳方法是什么?

    这个问题是我的问题的改进观察数据变化的不同方式 https stackoverflow com questions 3161392 different ways of observing data changes 我的 C 应用程序中仍然有
  • 如何隐藏ng网格中的列

    这是我的代码 索引 html
  • 配置 WiX 自动设置产品版本属性?

    目前 每当我构建包时 我都必须手动增加 P roduct wxs 文件中的 Version 属性 如下所示
  • 如何找到 JavaScript 数组中包含的最大数字?

    我有一个简单的 JavaScript 数组对象 其中包含一些数字 267 306 108 有没有一个函数可以找到这个数组中最大的数字 辞职来救援 http ejohn org blog fast javascript maxmin Arra
  • 在网站中存储用户上传的文件的最佳方式是什么?

    我正在尝试创建一个网站 需要在其中存储一些用户上传的文件 如一些个人资料图片 一些 xml 文件等 那么存储这些文件的最佳方式是什么 目前 我正在服务器上为每个注册的新用户创建一个新目录 并将每个用户的文件存储在各自的目录中 但有人告诉我这
  • Jersey、Guice 和 Hibernate - EntityManager 线程安全

    我在我的应用程序中以同样的方式使用了本教程 http www benmccann com hibernate with jpa annotations and guice http www benmccann com hibernate w
  • Font Awesome 5 使用 JS+SVG 版本时显示空方块

    尝试用 Font Awesome 图标替换列表项标签上的项目符号类型 但我得到一个空方块 ul list style none testitems line height 2em testitems before font family F
  • 在 OS X 终端中构建和运行 Monodevelop 解决方案

    我想从 OS X 终端构建并运行 Monodevelop 解决方案 执行此操作的适当工具 命令是什么 我尝试跑步mdtools build从包含的目录MySolution sln 这导致 bash mdtools command not f
  • 如何查找一个字段的值与另一字段的值匹配的所有文档

    我的文档中有两个字段 具有以下映射 field a type float field b type float 如何找到具有以下值的所有文档field a匹配的是field b 禁用脚本可以实现这一点吗 基本上你需要一个脚本来完成它 即使禁
  • C++ 类型名和内部类

    我尝试用谷歌搜索这个问题 但无法找到合适的答案 任何 C 大师都可以告诉我为什么 C 要求你声明 OuterClass
  • Kafka 到 Snowflake 连接问题

    我正在尝试从本地独立 Confluence Kafka 主题连接到 Snowflake 表 我正在使用以下连接器配置ksqldb CREATE SINK CONNECTOR snowflake sink WITH name snowflak
  • Eclipse 在调试 ctrl+shift+i 时丢失了检查快捷方式

    我正在尝试恢复快捷方式 但没有成功 有一个执行检查的快捷方式 只需单击 CTRL SHIFT I 但现在我已经没有这个功能了 它似乎消失了 有想法恢复它吗 谢谢 最后我想出了如何恢复这个命令 要到达此面板 您必须转到 Windows gt
  • 比较剪贴板中的 IDataObject

    我的 WPF 应用程序检查剪贴板上的数据 看看它是否可以使用该数据 因为我根据数据设置了一些按钮来启用 禁用 通过ICommand实现 这段代码被频繁调用 确定我的应用程序是否可以处理数据的工作有时可能非常重要 因此会导致我的应用程序随机
  • 在用户输入的数组中查找值

    我试图在用户之前输入过的数组中找到任何用户输入的值 我做了以下操作来查找数组中输入的值 但似乎不知道在哪里插入循环来查找用户输入的搜索值 好的 更新 我正在寻找一种方法来查找用户之前输入的数组中输入的值 如果符合逻辑的话是这样的 好的第二次
  • 面板上的 DrawToBitmap 为空白

    因此 我编写了一个类 它存储一些测试结果信息 然后是一个向用户显示该信息的控件 我想在此类上放置一个打印函数 以全页大小绘制控件并打印它 然而它总是显示空白 该代码将面板视为控件 因为它可能是其他类型的值 我想我一定缺少一些简单的东西 vo