我这里有一个严重的问题。我正在编写一个工具,用户可以在其中设计开关柜的控制柜。Cubicle 是用 Panels 和 Pictureboxes 绘制的,效果很好,看起来也不错。
现在我想制作一个导出功能,将设计的 Cubicle 导出为 pdf 文件。
到目前为止一切顺利,该功能有效 - 仅在我的电脑上!我使用 CopyFromScreen 获取显示隔间的面板的屏幕截图,将其保存到文件中并将其放入 pdf 文件中(我还尝试使用 DrawToBitmap 获取面板的图片,但这不能正常工作,因为它正在绘制一些图片框而不是其他图片框)。在我的计算机上,它正确捕获面板并在 pdf 中显示正确的图片,但是在其他每台计算机上,它都会拍摄表单背后的图片。这很令人困惑,因为我不知道为什么它应该这样做以及为什么它在我的系统上工作。到目前为止,我尝试了一些方法来强制窗口位于顶部,但没有任何效果,每个人都会获得桌面或后面窗口的图片。
代码:
void takeScreenshot()
{
this.TopMost = true;
this.BringToFront();
this.Focus();
Application.DoEvents();
System.Drawing.Rectangle bounds = Mainpanel.Bounds;
bounds.Width = bounds.Width - 6;
bounds.Height = bounds.Height - 4;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Mainpanel.PointToScreen(new Point()).X + 3, Mainpanel.PointToScreen(new Point()).Y + 2, 0, 0, bounds.Size);
}
bitmap.Save(Application.StartupPath + "\\data\\programdata\\temppic.bmp");
}
this.TopMost = false;
}
我实际上很绝望,没有导出程序是没用的。
有谁知道如何解决这个问题?
乔纳森