CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap; //定义一个位图对象
MemDC.CreateCompatibleDC(NULL); //随后建立与屏幕显示兼容的内存显示设备
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
MemDC.MoveTo(……);
MemDC.LineTo(……);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
CDC MemDC 类型在C#中对应什么类型?
CBitmap MemBitmap; //定义一个位图对象
MemDC.CreateCompatibleDC(NULL); //随后建立与屏幕显示兼容的内存显示设备
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
MemDC.MoveTo(……);
MemDC.LineTo(……);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
CDC MemDC 类型在C#中对应什么类型?
解决方案 »
- 关于字符串截取问题
- 关于C#中的WindowsApplication能不能直接导出数据库,使得在不同的计算机上都不用安装SQL也可以直接进行运行
- 移除combobox的最后一项以后,combobox仍然显示该项,但是Items是没有项的
- 请教个问题
- 关于第三方支付平台设计
- 如何实现TREEVIEW节点的逐层展开?
- 求 c# System.AddIn 插件开发资料
- 表查询问题:::(在线等)
- 能否在C#代码运行之前判断一下系统是否安装了.Net Framework呢?
- 简单问题: 通过WEB访问本地网络路径的问题
- .NET 环境下的 Object-Relation Mapping 产品那个比较好?各有什么优缺点?欢迎点评!
- 菜鸟问个非常奇怪的问题
this.SetStyle(ControlStyles.DoubleBuffer,true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);
this.SetStyle(ControlStyles.UserPaint,true);
this.UpdateStyles();
实现双重缓冲,在实际应用中根本就不好用,一点作用都没有,窗口该还闪烁。
Image imageFile = Image.FromFile(@"E:\TouchMan\TouchMan\bin\Debug\resources\images\BKG_1.JPG");
protected override void OnPaint(PaintEventArgs e)
{
Graphics gxOff; //屏幕外的图像 if (m_bmpOffscreen == null) //要双缓冲的位图
{
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
}
Rectangle rc = this.ClientRectangle; gxOff = Graphics.FromImage(m_bmpOffscreen);
gxOff.Clear(this.BackColor);
//imageFile.
//绘制一些位图
gxOff.DrawImage(imageFile, 0, 0, rc, GraphicsUnit.Pixel);
//边界矩形
// rc.Width--;
// rc.Height--;
//绘制边界
//gxOff.DrawRectangle(new Pen(Color.Black), rc);
//从内存位图绘制
e.Graphics.DrawImage(m_bmpOffscreen, 0, 0,rc,GraphicsUnit.Pixel); base.OnPaint( e ); //this.FromImageImage(e);
// base.OnPaint( e );
}
Bitmap m_bmpOffscreen=null;
Image imageFile = Image.FromFile(@"E:\TouchMan\TouchMan\bin\Debug\resources\images\BKG_1.JPG");
protected override void OnPaint(PaintEventArgs e)
{
Graphics gxOff; //屏幕外的图像 if (m_bmpOffscreen == null) //要双缓冲的位图
{
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
}
Rectangle rc = this.ClientRectangle; gxOff = Graphics.FromImage(m_bmpOffscreen);
gxOff.Clear(this.BackColor);
//imageFile.
//绘制一些位图
gxOff.DrawImage(imageFile, 0, 0, rc, GraphicsUnit.Pixel);
//边界矩形
// rc.Width--;
// rc.Height--;
//绘制边界
//gxOff.DrawRectangle(new Pen(Color.Black), rc);
//从内存位图绘制
e.Graphics.DrawImage(m_bmpOffscreen, 0, 0,rc,GraphicsUnit.Pixel); base.OnPaint( e ); //this.FromImageImage(e);
// base.OnPaint( e );
}
Bitmap m_bmpOffscreen=null;
Image imageFile = Image.FromFile(@"E:\TouchMan\TouchMan\bin\Debug\resources\images\BKG_1.JPG");
protected override void OnPaint(PaintEventArgs e)
{
Graphics gxOff; //屏幕外的图像 if (m_bmpOffscreen == null) //要双缓冲的位图
{
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
}
Rectangle rc = this.ClientRectangle; gxOff = Graphics.FromImage(m_bmpOffscreen);
gxOff.Clear(this.BackColor);
//imageFile.
//绘制一些位图
gxOff.DrawImage(imageFile, 0, 0, rc, GraphicsUnit.Pixel);
//边界矩形
// rc.Width--;
// rc.Height--;
//绘制边界
//gxOff.DrawRectangle(new Pen(Color.Black), rc);
//从内存位图绘制
e.Graphics.DrawImage(m_bmpOffscreen, 0, 0,rc,GraphicsUnit.Pixel); base.OnPaint( e ); //this.FromImageImage(e);
// base.OnPaint( e );
}
上面的方法也不行