您的位置:程序门 -> vc/mfc -> 界面



关于徒手画直线的,我自己的程序鼠标移动的时候闪的厉害,请问高手有什么好方法?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于徒手画直线的,我自己的程序鼠标移动的时候闪的厉害,请问高手有什么好方法?
发表于:2007-06-09 17:54:50 楼主
(1)单文档应用程序,支持视,在客户视图区域内画线
(2)能够完成在视图区域内连续画线,即鼠标第一次单击确定起始点,鼠标左键抬起时有自起点到当前鼠标位置的直线相连,此直线能够动态跟随光标移动,在第二次鼠标单击,直线固定,接下去周而复始,完成连续画线
发表于:2007-06-09 18:24:121楼 得分:0
双缓冲
发表于:2007-06-09 19:22:492楼 得分:0
你是怎么画的?我学孙鑫画的没出现这种情况
发表于:2007-06-10 15:54:263楼 得分:0
用r2_notxorpe模式,每移动一次,先把原来位置的线擦掉,再画新的线,不要在ondraw里重画就不会闪了
cpoint   ptstart,   ptend;
moveto(ptstart.x,   ptstart.y);
lineto(ptend.x,   ptend.y);
ptend   =   point;
moveto(ptstart.x,   ptstart.y);
lineto(ptend.x,   ptend.y);

发表于:2007-06-11 14:47:394楼 得分:0
曾经用过楼上的方法做过,画新的直线之前,用异或的方式重新画一下上次的直线,再画新的直线就可以.效率上也还可以.

另外,应该也可以用内存映射方法绘制吧.开辟一块内存,先在这块内存里面画出要绘制的东西,然后放到屏幕显示.理论说这种方法效率更高些.我用这种方法显示图形啥的速度还是挺快.
发表于:2007-06-13 16:45:265楼 得分:0
我初学,请问内存映射方法是怎么回事?
我就是在ondraw里面画的,不停地刷新。。
发表于:2007-06-13 16:46:346楼 得分:0
还有   什么叫双缓冲啊?
发表于:2007-07-09 10:34:517楼 得分:0
双缓冲就是去掉闪烁的办法了
cbitmap*   bitmap
声明一个位图,在其上画,到最后select   object   一下,就不会闪了.
发表于:2007-07-09 17:53:188楼 得分:0
也学习了一下。
发表于:2007-07-09 18:13:309楼 得分:0
学习,接分
发表于:2007-07-10 13:11:0910楼 得分:0
尽量少用invalidate就好了
发表于:2007-07-26 14:04:3611楼 得分:0
mark
发表于:2007-07-27 09:11:4412楼 得分:0
双缓冲就是新建张bitmap,然后在dc上画什么东西都放在bitmap里,画完之后将bitmap一下子显示出来就行了~
网上有很多例子
cmendc
发表于:2007-07-27 12:21:1913楼 得分:0
楼上们说的只是单缓冲吧


快速检索

最新资讯
热门点击