VC++简单实现工具软件随鼠标移动画线的功能

一些绘图或仿真软件都有这功能,随鼠标移动,始终有一条线从起点跟随到鼠标当前位置;这功能不只是随鼠标移动画线;实际要实现2个功能:擦除前一条线,再画一条从起点到当前鼠标位置的线;

环境Win10,VC6;新建一个单文档工程;

为视类添加鼠标移动消息处理函数;在其中画线;

为简单起见,设起点为(0,0),始终画一条线指向鼠标当前位置;

如果不进行擦除,效果是这样的;

视类头文件添加成员变量;pt1是起点,ptold为前一条线的终点;

CPoint ptold, pt1;

视类CPP文件构造函数中初始化;

    ptold.x=0;
    ptold.y=0;
    pt1.x=0;
    pt1.y=0;

视类鼠标移动消息处理函数代码:

void CLine1View::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CDC* pDC=GetDC();

	//屏幕色取反,擦除前一条线
	int nNew= SetROP2(pDC->m_hDC,R2_NOTXORPEN);
	pDC->MoveTo(pt1);
	pDC->LineTo(ptold);

	//绘制起点到当前点的线
	pDC->MoveTo(pt1);
	pDC->LineTo(point);
	ptold=point;  //设置前一条线的终点用来下个鼠标移动消息擦除

	CView::OnMouseMove(nFlags, point);
}

除了MoveTo、LineTo,还需要使用SetROP2;VC自身会把鼠标当前位置通过point传来;

SetROP2函数,该函数的主要的作用是根据参数设置的方式重新设定绘图的方式;

擦除之后效果如下;效果就对了;

发布了475 篇原创文章 · 获赞 545 · 访问量 304万+

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/105304650
今日推荐