win32开发(图形绘制)

来源:互联网 发布:做淘宝直播怎么找商家 编辑:程序博客网 时间:2024/06/06 19:55

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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画椭圆形。

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


原创粉丝点击