主要是有一个panel,我要在panel里面加载一张图片,由于图片比较大,需要能通过触摸屏移动图片。所以我实现了mouseMove事件,每次计算坐标,而后对panel进行refresh()操作。
在panel的paint事件的实现中,使用了双缓冲的方法,先在建立一张与panel同样大小的Image,而后对其画图,画完之后再传给绘图区……可问题在于,每次移动图片的时候PPC都闪得厉害,不知道该如何解决,望各位网友指点一二。主要代码如下:
private void panelMap_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (mouseIsDown == true)
{
this.presentPoint.X = this.lastPoint.X + (e.X - this.downPoint.X) * 2;
this.presentPoint.Y = this.lastPoint.Y + (e.Y - this.downPoint.Y) * 2;
this.panelMap.Refresh();
}
} private void panelMap_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g; if (this.bufferMap == null)
{
this.bufferMap = new Bitmap(this.panelMap.Width, this.panelMap.Height);
} g = Graphics.FromImage(this.bufferMap); g.DrawImage(this.imgMap, this.presentPoint.X, this.presentPoint.Y); e.Graphics.DrawImage(this.bufferMap, 0, 0);
}
在panel的paint事件的实现中,使用了双缓冲的方法,先在建立一张与panel同样大小的Image,而后对其画图,画完之后再传给绘图区……可问题在于,每次移动图片的时候PPC都闪得厉害,不知道该如何解决,望各位网友指点一二。主要代码如下:
private void panelMap_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (mouseIsDown == true)
{
this.presentPoint.X = this.lastPoint.X + (e.X - this.downPoint.X) * 2;
this.presentPoint.Y = this.lastPoint.Y + (e.Y - this.downPoint.Y) * 2;
this.panelMap.Refresh();
}
} private void panelMap_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g; if (this.bufferMap == null)
{
this.bufferMap = new Bitmap(this.panelMap.Width, this.panelMap.Height);
} g = Graphics.FromImage(this.bufferMap); g.DrawImage(this.imgMap, this.presentPoint.X, this.presentPoint.Y); e.Graphics.DrawImage(this.bufferMap, 0, 0);
}
解决方案 »
- 动态加载自定义事件中如何处理委托事件???
- 高手帮忙,关于xml做数据库实现asp.net的登陆
- 数据库还原操作提示不支持在原设备还原
- 属性类能不能实现这种功能?
- 怎样在关闭窗体时将这个窗体的文本框中的内容清空啊?
- 怎样将图片用一个个圆点画出来?
- 我想学C#.net,大家给点建议
- web方式下,如何让Datagrid中的单元格子数据自动折行
- ASP.net 解析xml问题
- 怎么在datagridview中显示图片 如果用string sql = "select ydy.照片 as 照片 from ydy where 专项='划船'";
- DataGridView如何进行刷新?
- 高手看我的程序是哪出错了!!
http://www.codeproject.com/cs/media/flickerFreeDrawing.asp
您说的没错,是由于在mousemove的时候一直调用refresh()函数使得屏幕闪动的。我的开发样机是HP的,上面有个图像浏览工具叫HP Image Zone,在上面拖动图像就能很好的得到响应而且不会闪动。所以实时响应拖动还是可能的,肯定是我的方法哪里出了问题。谢谢