自定义拖放控件,点击时会闪 控件拖拉闪烁object 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 draw方法: public void Draw() { this.BringToFront(); Pen pen = new Pen(Color.Black); pen.DashStyle = DashStyle.Dot;//设置为虚线,用虚线画四边,模拟微软效果 g.DrawLines(pen, linePoints);//绘制四条边线 g.FillRectangles(Brushes.White, smallRects); //填充8个小矩形的内部 foreach (Rectangle smallRect in smallRects) { g.DrawEllipse(Pens.Black, smallRect); //绘制8个小椭圆 } }这些代码都是引用别人的,他的是静态控件没问题,我的是从工具箱拖过来,动态生态的。 楼主是虚框拖动,不是控件移动,因此你的试试是对不上号的。至于为啥闪,因为楼主的移动虚框效果是通过重绘虚框来实现的,而清除以前绘制的虚框又是通过父控件的刷新来实现的,这个刷新太频繁导致的闪。因此要根本解决就必须改变实现方式,那个虚框移动要通过重绘来实现,但是清除之前的虚框不能刷新父控件,怎么办呢?很简单,每次绘制虚框之前,将所位置虚框的范围的颜色记录下来,清除它就用之前记录的颜色还原。这样小部分的绘制效率非常高,根本不会有闪的感觉。还有一个方法,如果你要求不高,可以使用Windows API提供的虚框效果。 不好意思,是我没说清楚。我要实现类似VS拖控件,然后可以单击控件,显示一个虚线框,然后可以通过虚框调整大小跟移动。也可以拉鼠标选中多个控件,集体操作,如对齐。我的虚框是一个自定义用户控件,当单击时才new一个,调用他的draw。你的方法好像行不通我是在别人代码基础上改的,第一次用GDI绘图,不太懂, 这个问题纠结了快一个星期了。现在情况是这样:因为有背景图片,如果绘之前用原来的颜色覆盖,就会跟图片不吻合;用g.clear会把背景图清除了,这时候如果再加上背景图,闪的厉害;还有就是用容器的reflesh(),这样也是会闪。有没有其他办法啊。哪位高手愿意不吝赐教啊,加我QQ吧:704931990快崩溃了,求打救啊。 public void Set() { this.BringToFront(); Pen pen = new Pen(Color.Black); pen.DashStyle = DashStyle.Dot;//设置为虚线,用虚线画四边,模拟微软效果 g.DrawLines(pen, linePoints);//绘制四条边线 g.FillRectangles(Brushes.White, smallRects); //填充8个小矩形的内部 foreach (Rectangle smallRect in smallRects) { g.DrawEllipse(Pens.Black, smallRect); //绘制8个小椭圆 } } ajax是不是webform的东东? winform 可以用么? winform不行....winform闪烁肯定是你代码没写好.... rubber rectangle搜codeproject.com 我也是这样的问题,顶下还带一个问题,就是动态调用的自定义控件(重绘问题),缩放的时候闪烁问题,我想将控件上的图片先存到缓存中,但不知道该怎么去画 如何在动态调用的自定义控件上用GDI画图 vs2005serialPort类使用,下位机发数据,电脑接受,如何实现 如何在winform页面内传值? 界面显示异常 关于OPML文件的操作 C# by Dissection 第三章(语句) 练习题(请教) 紧急求助.页面错误!在线等 C#查询出datagridview里有图片,如何在fastreport里打印出来! 我想对目录建树,有谁给出代码最好(给200) 我如何引入一个tabControl而不用在窗体上添加 用什么将HTML页面显示出来? C# 使用SHFileOperation出现“无法读源文件或磁盘错误” WPF templatebinding问题
public void Draw()
{
this.BringToFront();
Pen pen = new Pen(Color.Black);
pen.DashStyle = DashStyle.Dot;//设置为虚线,用虚线画四边,模拟微软效果
g.DrawLines(pen, linePoints);//绘制四条边线
g.FillRectangles(Brushes.White, smallRects); //填充8个小矩形的内部
foreach (Rectangle smallRect in smallRects)
{
g.DrawEllipse(Pens.Black, smallRect); //绘制8个小椭圆
}
}这些代码都是引用别人的,他的是静态控件没问题,我的是从工具箱拖过来,动态生态的。
还有一个方法,如果你要求不高,可以使用Windows API提供的虚框效果。
不好意思,是我没说清楚。我要实现类似VS拖控件,然后可以单击控件,显示一个虚线框,然后可以通过虚框调整大小跟移动。也可以拉鼠标选中多个控件,集体操作,如对齐。我的虚框是一个自定义用户控件,当单击时才new一个,调用他的draw。
你的方法好像行不通
我是在别人代码基础上改的,第一次用GDI绘图,不太懂,
public void Set()
{
this.BringToFront();
Pen pen = new Pen(Color.Black);
pen.DashStyle = DashStyle.Dot;//设置为虚线,用虚线画四边,模拟微软效果
g.DrawLines(pen, linePoints);//绘制四条边线
g.FillRectangles(Brushes.White, smallRects); //填充8个小矩形的内部
foreach (Rectangle smallRect in smallRects)
{
g.DrawEllipse(Pens.Black, smallRect); //绘制8个小椭圆
}
}
搜codeproject.com
还带一个问题,就是动态调用的自定义控件(重绘问题),缩放的时候闪烁问题,我想将控件上的图片先存到缓存
中,但不知道该怎么去画 如何在动态调用的自定义控件上用GDI画图