对隐藏控件 截图 隐藏 控件 截图 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不显示出来,你就要把实际内容绘制到bitmap上输出或者取消隐藏,然后在设置隐藏 现在处理就是要不显示,所以放后台处理。请问怎么把实际内容绘制到bitmap上输出? 先control.CreateControl()再control.DrawToBitmap 《C#入门经典》 GDI+章节关于双倍缓冲的例子。 #region Interop [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr hdc, PRF_FLAGS drawingOptions); const uint WM_PRINT = 0x317; [Flags] enum PRF_FLAGS : uint { CHECKVISIBLE = 0x01, CHILDREN = 0x02, CLIENT = 0x04, ERASEBKGND = 0x08, NONCLIENT = 0x10, OWNED = 0x20 } #endregion public static Image CaptureImage(this Control control) { Image img = new Bitmap(control.Width, control.Height); using (Graphics g = Graphics.FromImage(img)) { SendMessage( control.Handle, WM_PRINT, g.GetHdc(), PRF_FLAGS.CLIENT | PRF_FLAGS.NONCLIENT | PRF_FLAGS.ERASEBKGND); } return img; }试试~~ 不显示就在后台绘制成bmp就好了。基本的方法就是下面这样了,Bitmap bmp = new Bitmap();bmp.Graphics.DrawString()....drawstring就是画文本的,drawimage就是画图片的。 把控件放在不可见的区域可以实现,但是控件的Visible属性设置成False的话就不行。谢谢,可以解决我的需求!! (int)((Convert.ToSingle("1.3")) * 10)不等于13? 关于方法中有泛型接口的调用 请问怎么在设计时, 获取到当前项目的所在的绝对路径呢? 关于匹配网页中的URL正则表达式,急急急 郁闷的Socket问题,是我没搞懂http头文件吗?请教 怎么让C写的消息队列让C#读出来 一个小问题,请指点下! c#远程调用com+问题 等待窗体在有些电脑上不透明 C#的命名空间 将二进制转为日期格式 文本定义固定字段
或者取消隐藏,然后在设置隐藏
现在处理就是要不显示,所以放后台处理。请问怎么把实际内容绘制到bitmap上输出?
再control.DrawToBitmap
static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr hdc, PRF_FLAGS drawingOptions); const uint WM_PRINT = 0x317; [Flags]
enum PRF_FLAGS : uint
{
CHECKVISIBLE = 0x01,
CHILDREN = 0x02,
CLIENT = 0x04,
ERASEBKGND = 0x08,
NONCLIENT = 0x10,
OWNED = 0x20
} #endregion public static Image CaptureImage(this Control control)
{
Image img = new Bitmap(control.Width, control.Height);
using (Graphics g = Graphics.FromImage(img))
{
SendMessage(
control.Handle,
WM_PRINT,
g.GetHdc(),
PRF_FLAGS.CLIENT | PRF_FLAGS.NONCLIENT | PRF_FLAGS.ERASEBKGND);
}
return img;
}试试~~
基本的方法就是下面这样了,
Bitmap bmp = new Bitmap();
bmp.Graphics.DrawString()....
drawstring就是画文本的,drawimage就是画图片的。
把控件放在不可见的区域可以实现,但是控件的Visible属性设置成False的话就不行。谢谢,可以解决我的需求!!