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画椭圆形。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值