您的位置:程序门 -> vc/mfc -> 基础类



如何在onmousemove中画线?


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


如何在onmousemove中画线?[已结贴,结贴人:ediex]
发表于:2007-08-06 15:48:20 楼主
如何在onmousemove中给鼠标加上移动线?
就是一条黑线可以左右移动
void   cmyview::onmousemove(uint   nflags,   cpoint   point)  
{

cdc*   pdc=getdc();
struct   {
int   xleft;
int   xright;
int   ytop;
int   ybottom;
}scurverect;
gxleft=1500;
scurverect.xleft=gxleft;
scurverect.xright=20100;
scurverect.ytop=4000;
scurverect.ybottom=-4000;
int   ibottomspace=80;//底部空白

//设置坐标
pdc-> setmapmode(mm_anisotropic);
crect   rectclient,rectclient2;
getclientrect(rectclient);
pdc-> setmapmode(mm_anisotropic);
pdc-> setwindowext(csize(20400,11720));
pdc-> setviewportext(rectclient.right,-rectclient.bottom);
pdc-> setviewportorg(rectclient.left,rectclient.bottom/2-ibottomspace);   //设置窗口左下角为原点坐标

if   (point.x*20> scurverect.xright)
point.x=scurverect.xright/20;
if   (point.x*20 <scurverect.xleft)
point.x=scurverect.xleft/20;
pdc-> moveto(point.x*20,scurverect.ytop);
pdc-> lineto(point.x*20,scurverect.ybottom);

cview::onmousemove(nflags,   point);
}


但是这样上次画的线都没有被清除,过一会就全黑了。
如果用 invalidaterect()就非常flash了。。。
发表于:2007-08-06 15:53:361楼 得分:20
用xor画,每次把上次的擦掉。
发表于:2007-08-06 15:55:272楼 得分:0
xor是什么东西呀?
发表于:2007-08-06 16:24:583楼 得分:0
我建议你不绘图功能加到onpaint中,
用双缓存就不会flash了。
发表于:2007-08-06 16:35:394楼 得分:0
异或操作呀,晕


快速检索

最新资讯
热门点击