win32开发(图形绘制)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    在win32上面绘制图形其实是比较简单的。要想进行图形绘制,关键是找到设备上下文。就我目前所知道的,获得设备上下文主要有这么几种方式:一、根据BeginPaint获得设备上下文,这主要在WM_PAINT使用;二、根据GetDC获得设备上下文,这主要用在非WM_PAINT消息中;三、CreateDC获得设备上下文,这个主要用在屏幕的截取;四、根据CreateCompatibleDC获得设备上下文,然后通过BitBlt进行绘制,这个一般用在图形界面较多的绘制场景。今天,我们就讨论前面两种,后面两种等遇到了再说。


    WM_PAINT下用BeginPaint获得设备上下文是比较常用的方式,比如下面一段代码,

		case WM_PAINT:
		    hdc = BeginPaint(hWnd, &ps);
			// TODO: Add any drawing code here...
			MoveToEx(hdc, 100,100,NULL);
			LineTo(hdc, 150,230);
			Rectangle(hdc, 200, 200, 300, 300);
			Ellipse(hdc, 15,15,  130, 130);
			EndPaint(hdc, &ps);
			break;

    同样一段代码,如果是在鼠标响应的时候调用,应该怎么修改呢?

			case WM_RBUTTONUP:
			    hdc = GetDC(hWnd);
			    // TODO: Add any drawing code here...
			    MoveToEx(hdc, 100,100,NULL);
			    LineTo(hdc, 150,230);
			    Rectangle(hdc, 200, 200, 300, 300);
			    Ellipse(hdc, 15,15,  130, 130);
			    ReleaseDC(hWnd, hdc);
			    break;
    大家发现没有,其实绘制的内容都是一样,只是hdc获取的方式发生了改变而已。

    其次,这里主要使用了这几个函数,

			MoveToEx(hdc, 100,100,NULL);
			LineTo(hdc, 150,230);
			Rectangle(hdc, 200, 200, 300, 300);
			Ellipse(hdc, 15,15,  130, 130);

    这其中MoveToEx和LineTo搭档画直线,Rectangle画矩形,Ellipse画椭圆形。

    有兴趣的同学可以试一试。


你可能感兴趣的:(mfc和win32开发)