win32窗口程序 -----2、绘图

概要:
HDC hdc;
PAINTSTRUCT ps;
HBRUSH Purple_Brush= CreateSolidBrush(RGB(102,0,204));
HBRUSH White_Brush= CreateSolidBrush(RGB(255,255,255));//定义画刷
关键函数:
1、 BeginPaint( HWND hWnd, LPPAINTSTRUCT lpPaint);
)//BeginPaint()函数为指定窗口进行绘图工作的准备,并用将和绘图有关的信息填充到一个PAINTSTRUCT结构中
hdc = BeginPaint(hWnd,&ps);

2、EndPaint( HWND hWnd,CONST PAINTSTRUCT *lpPaint)//EndPaint()函数标记指定窗口的绘画过程结束;
EndPaint (hWnd, &ps) ;

3、SelectObject(hdc,Purple_Brush);
DeleteObject(Purple_Brush);

                   hdc = BeginPaint(hWnd,&ps);
                      //1.选择紫色的画刷
                        SelectObject(hdc,Purple_Brush);
                    //2.画一个矩形       
                        Rectangle( hdc, 50, 50, 450, 450);  

                    //3.选择白色的画刷
                          SelectObject(hdc,White_Brush);
                    //4.画一个圆
                        Ellipse( hdc, 100, 100,300,300);
                    //5.释放紫色画刷和白色画刷
                       DeleteObject(Purple_Brush);
                        DeleteObject(White_Brush);

                   EndPaint (hWnd, &ps) ;

详细代码如下:

 #include <Windows.h>

 LRESULT CALLBACK MyWNDPROC(HWND, UINT, WPARAM, LPARAM); 
int  CALLBACK WinMain( HINSTANCE hInstance,  //当前应用程序实例的句柄
                      HINSTANCE hPrevInstance, //应用程序前一个实例的句柄
                      LPSTR lpCmdLine,     //命令行参数
                      int nCmdShow)       //决定这个窗口显示方式的参数
{              HWND hWnd;
                MSG msg;
                LPPAINTSTRUCT ps  ;

                1.设计窗口
              WNDCLASSEX ex;  // WNDCLASSEX是结构体 ,该语句定义了一个为ex的 结构体
              ex.style  = CS_HREDRAW | CS_VREDRAW;   //  窗口水平刷新、垂直刷新
              ex.cbSize =  sizeof(ex);
              ex.cbClsExtra   =  0;          
              ex.cbWndExtra   =  0;          
              ex.hInstance    =  hInstance;  
              ex.hIcon        =  NULL;       
              ex.hIconSm      =  NULL;       
              ex.hCursor      =  NULL;       
              ex.lpszMenuName =  NULL;
 ex.hbrBackground=   CreateSolidBrush(RGB(237,28,36));//指定背景画刷句柄 红色
              ex.lpszClassName= "123"; //指定窗口的名字,用于CreateWindow()函数
        ex.lpfnWndProc  =   MyWNDPROC;//数指针类型=函数 ,函数名装的就是函数的地址

             //2.注册
             RegisterClassEx(&ex);
            //3.创建
                hWnd=CreateWindow(ex.lpszClassName,"简单的paint",WS_OVERLAPPEDWINDOW,100,100,
                    600,600,NULL,NULL,hInstance,NULL);
                //创建窗口函数,在窗口创建完成之后,会返回一个句柄,
                //之后对窗口的操作就根据句柄来实现
            //4.显示
                ShowWindow(hWnd,nCmdShow) ;
             //5.消息循环
                while(GetMessage(&msg,NULL,0,0))  //NULL接受所有的消息,变成hWnd只接受该窗口的
                {
                          TranslateMessage(&msg) ;
                           DispatchMessage(&msg) ;
                }

}
 LRESULT CALLBACK MyWNDPROC(HWND hWnd,UINT Msg, WPARAM wParam, LPARAM lParam)
//窗口处理函数,消息处理函数
 {

        HBRUSH Purple_Brush=  CreateSolidBrush(RGB(102,0,204));
        HBRUSH White_Brush=  CreateSolidBrush(RGB(255,255,255));
         HDC hdc;
         PAINTSTRUCT ps;
     switch (Msg)
     {

             case   WM_CLOSE:
                   PostQuitMessage(0);
                    break;

             case   WM_PAINT :
                    hdc = BeginPaint(hWnd,&ps);
                       //1.选择紫色的画刷
                        SelectObject(hdc,Purple_Brush);
                    //2.画一个矩形       
                        Rectangle( hdc, 50, 50, 450, 450);  

                    //3.选择白色的画刷
                          SelectObject(hdc,White_Brush);
                    //4.画一个圆
                        Ellipse( hdc, 100, 100,300,300);
                    //5.释放紫色画刷和白色画刷
                       DeleteObject(Purple_Brush);
                        DeleteObject(White_Brush);

                   EndPaint (hWnd, &ps) ;


     }
        return DefWindowProc(hWnd,Msg,wParam,lParam);
 }

运行结果如下图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值