C#打印屏幕可滚动控件
我有一个控件,它是可滚动的绘图仪。绘图仪完成打印后,可以按如下方式滚动: 我的绘图仪是一个实时绘图仪,也就是说,它会随着时间的推移而打印,而不是静态绘图仪(您可以手动输入值的绘图仪)。停止绘图仪后,我可以在绘图仪上滚动查看结果。但是,我想将绘图仪保存到一个图像中,这是我尝试使用打印屏幕方法来完成的。但我能够捕获的只是绘图仪的可见部分,而不是绘图仪的不可见部分(这是因为它需要滚动)。我希望现在更清楚了。 打印屏幕的代码为:C#打印屏幕可滚动控件,c#,printing,screen,region,scrollable,C#,Printing,Screen,Region,Scrollable,我有一个控件,它是可滚动的绘图仪。绘图仪完成打印后,可以按如下方式滚动: 我的绘图仪是一个实时绘图仪,也就是说,它会随着时间的推移而打印,而不是静态绘图仪(您可以手动输入值的绘图仪)。停止绘图仪后,我可以在绘图仪上滚动查看结果。但是,我想将绘图仪保存到一个图像中,这是我尝试使用打印屏幕方法来完成的。但我能够捕获的只是绘图仪的可见部分,而不是绘图仪的不可见部分(这是因为它需要滚动)。我希望现在更清楚了。 打印屏幕的代码为: // Set the bitmap object to the size
// Set the bitmap object to the size of the screen
bmpScreenshot = new Bitmap(panel2.Bounds.Width, panel2.Bounds.Height, PixelFormat.Format32bppArgb);
// Create a graphics object from the bitmap
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
Point p = this.PointToScreen(new Point(panel2.Bounds.X, panel2.Bounds.Y));
gfxScreenshot.CopyFromScreen(p.X, p.Y, 0, 0,
panel2.Bounds.Size, CopyPixelOperation.SourceCopy);
SaveFileDialog saveImageDialog = new SaveFileDialog();
saveImageDialog.Title = "Select output file:";
saveImageDialog.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
if (saveImageDialog.ShowDialog() == DialogResult.OK)
{
bmpScreenshot.Save(saveImageDialog.FileName, ImageFormat.Jpeg);
}
非常感谢。请看这里:您应该调用Win32 API打印窗口。请看这里:您应该调用Win32 API打印窗口。代码?如果是滚动事件上的控件调用。您的意思是当您滚动控件时,您会看到空白?你用什么代码画这个图?很抱歉搞混了。编辑我的问题。请输入代码?如果是滚动事件上的控件调用。您的意思是当您滚动控件时,您会看到空白?你用什么代码画这个图?很抱歉搞混了。编辑了我的问题。我对他的问题的解释是,他能够绘制他需要绘制的内容,但他不能制作控件不可见区域的打印屏幕,这是一种解释,可能是错误的,但因为他在标题中谈到了打印屏幕……很公平,我试着推OP给出一个更好的问题以避免解释:)忽略我的评论。谢谢Davide,我已经更新了我的问题。您的解释是正确的,但是您发布的链接谈到了实际的“打印”,我不想这样做。我对他的问题的解释是,他能够绘制他需要绘制的内容,但他不能制作控件不可见区域的打印屏幕,这是一种解释,可能是错误的,但因为他在标题中谈到了印刷屏幕……很公平,我试图推动OP提出一个更好的问题以避免解释:)忽略我的评论。谢谢Davide,我更新了我的问题。你的解释是正确的,但是你发布的链接谈到了实际的“打印”,我不想这样做。