怎样对矩形设置透明颜色?谢谢大家了! gc.Clear(this.BackColor)不行吗?背景图放到窗体的Backgroundimage属性里。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的背景图是用的image类动态加载的一副图片.我还要试试哈! 在输出时才画,也就是Paint事件里,而不是MouseMove事件里。你可以先建立个背景图,这个相对固定的。在MouseMove事件计算好要画矩形的区域,记录下来。调用Invalidate,触发Paint事件。在Paint事件里面,建立一个输出Bitmap,先将背景图画上去,再判断是否要画矩形,和要画矩形的区域,将矩形画上去。将这个输出Bitmap画到Paint事件参数的Graphics上面输出。也就是说每次都只有背景和这次要画的矩形,上次画的矩形被丢弃了。进阶一点要求效率的话,调用Invalidate时可以指定重画区域,Paint事件里面画这个区域的内容就可以了。 我也试过,可是调用了Invalidate会感觉整个的窗口抖动的非常厉害,不知道可不可以减轻整个窗口的抖动呢?谢谢楼上了! 使用双缓冲!具体代码见:http://blog.csdn.net/zhoufoxcn/archive/2006/12/25/1461090.aspx 调用Invalidate时指定重画区域假设你上次画的矩形是lastRectange,MouseMove事件里面:Rectange rect = ComputeRectange(); // 计算要画的矩形区域,ComputeRectange你自己定义Region r = new Region(rect);r.Union(lastRectange);lastRectange = rect;this.Invalidate(r); Invalidate指定区域之后只会擦掉指定区域,其他地方还是保留。一般情况不会有闪动了。但是如果你的区域实在太大或者作图需要太长时间,可以先完成作图再Invalidate。 response = (HttpWebResponse)request.GetResponse();远程服务器返回错误: (502) 错误的网关。 C# winform中怎么设定label控件中指定字符的颜色 求一时间控件 datagridview新增空白行的问题???? 如何申请绑定google搜索框工具栏插件 请问dateTimePicker1控件的用法? 如何捕获键盘事件? 问一个非常小白的问题,为什么调试时总是出现From1窗体 偶的第一个。net程序的夭折!!!! 怎么用sql语句查出这一列最大的值呢? 一个面向对象的问题 vs2005 引包功能 改错功能 切换标记功能???
你可以先建立个背景图,这个相对固定的。
在MouseMove事件计算好要画矩形的区域,记录下来。调用Invalidate,触发Paint事件。
在Paint事件里面,建立一个输出Bitmap,先将背景图画上去,再判断是否要画矩形,和要画矩形的区域,将矩形画上去。将这个输出Bitmap画到Paint事件参数的Graphics上面输出。也就是说每次都只有背景和这次要画的矩形,上次画的矩形被丢弃了。
进阶一点要求效率的话,调用Invalidate时可以指定重画区域,Paint事件里面画这个区域的内容就可以了。
具体代码见:
http://blog.csdn.net/zhoufoxcn/archive/2006/12/25/1461090.aspx
Rectange rect = ComputeRectange(); // 计算要画的矩形区域,ComputeRectange你自己定义
Region r = new Region(rect);
r.Union(lastRectange);
lastRectange = rect;
this.Invalidate(r);
但是如果你的区域实在太大或者作图需要太长时间,可以先完成作图再Invalidate。