我用GDI在控件上画线因为要做画线更随鼠标的缘故,故每次鼠标的move,都必须带来2件事:
1)控件的refresh(目的是清除以前的画线)
2)drawline(在鼠标位置画新的线)这样就达到了画线更随鼠标的缘故
但是这样带来以一个严重的问题:
鼠标拖动画线的时候屏幕很卡,估计是每次画线之前都要热refresh的缘故;
如果我把refresh去掉,则屏幕内会出现N跳线(因为没有去掉以前的线了),但是这时候屏幕就不卡了(没有了refresh)所以我想了一个变通的办法:
就是依然不用每次画线之前refresh,但是每次画线之前把GDI之前画的线的颜色全部改成透明,只有最新的线的颜色才是显现的颜色(比如红色),这样的话虽然是个假象,但是好看多了我想能不能GDi画的之前的线能不能改颜色?或者还有什么其他的方法能保证GDI更随鼠标画线的时候(上述情况下),画线流畅,屏幕又不卡?谢谢啦额
1)控件的refresh(目的是清除以前的画线)
2)drawline(在鼠标位置画新的线)这样就达到了画线更随鼠标的缘故
但是这样带来以一个严重的问题:
鼠标拖动画线的时候屏幕很卡,估计是每次画线之前都要热refresh的缘故;
如果我把refresh去掉,则屏幕内会出现N跳线(因为没有去掉以前的线了),但是这时候屏幕就不卡了(没有了refresh)所以我想了一个变通的办法:
就是依然不用每次画线之前refresh,但是每次画线之前把GDI之前画的线的颜色全部改成透明,只有最新的线的颜色才是显现的颜色(比如红色),这样的话虽然是个假象,但是好看多了我想能不能GDi画的之前的线能不能改颜色?或者还有什么其他的方法能保证GDI更随鼠标画线的时候(上述情况下),画线流畅,屏幕又不卡?谢谢啦额
解决方案 »
- 【WPF】—腾讯微博授权后如何获取验证码 高分求教@
- 请教大家C#调用C++ DLL的问题
- C#里使用DataTable进行load时由于查询语句有left join 引起主键为null报异常
- 用什么控件什么方式显示一组数据比较有效率?
- Form窗体 像菜单式的弹出
- dbcommand.executreader返回datareader对象可能为null吗???
- C#通讯编程(整理)|大家可以进来学习
- ultraGrid Winform 怎么让它的列不能排序? 如何让表格不能选中多行(就是只能选中一行)?
- C#中如何生成条码,并在水晶报表中显示出来
- 我的网页在1024*800下面会缩到左上角,在样式生成器中要怎么设置呢
- 四周半透明阴影边框的窗体要怎么做?
- 如何在C#中控制numericUpDown只能输入不大于100的整数
第二 怎么在C#里面 异或画线啊请高手指导
Graphics gpshuang=Graphics.FromImage(bmp);
gpshuang.Clear(Color.Transparent);mousemove事件里写:
{
gpshuang.DrawLine(XXXX);
this.tuxiang1.CreateGraphics().DrawImage(bmp, 0, 0);
}发现画了一条线后,拖动鼠标的时候,线条全部都在,以前画过的历史全部都在,整个屏幕内全是画的线!
还是要调用控件的refresh,那不是更原来的一样? 什么用没有?