• 学习windows编程 day4 之 矩形的操作


    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        HDC hdc;
        PAINTSTRUCT ps;
        static RECT rect,rect2,rect3;
        static cxClient, cyClient;
        static HBRUSH hBrush, hOldBrush;
        POINT pt;
    
        switch (message)
        {
        case WM_SIZE:
            cxClient = LOWORD(lParam);
            cyClient = HIWORD(lParam);
            break;
        case WM_LBUTTONDOWN:
            pt.x = LOWORD(lParam);
            pt.y = HIWORD(lParam);
            if (PtInRect(&rect2,pt))
            {
                MessageBox(NULL, L"clicked", L"info", NULL);
            }
    
            break;
        case WM_PAINT:
            hdc = BeginPaint(hwnd, &ps);
    //处理矩形
    //         rect.left = cxClient / 2 - 50;
    //         rect.right = cxClient / 2 + 50;
    //         rect.top = cyClient / 2 - 50;
    //         rect.bottom = cyClient / 2 + 50;
    
            hBrush = CreateSolidBrush(RGB(255,0,0));
    //1.fillrect    填充矩形
            //FillRect(hdc, &rect, hBrush);
    //2.framerect    改画笔为画刷来绘制边框
            //FrameRect(hdc, &rect, hBrush);
    //3.invertrect    翻转矩形内所有的像素
            //InvertRect(hdc, &rect);
    
    //4.生成矩形SetRect
            SetRect(&rect, cxClient / 2 - 50, cyClient / 2 - 50, cxClient/2 + 50, cyClient/2 + 50);
    //5.偏移矩形OffsetRect
            OffsetRect(&rect, -150, -150);
            FillRect(hdc, &rect, hBrush);
            InvertRect(hdc, &rect);    //先显示图像,后翻转
    //6.增大减小,长宽同时InflateRect
            SetRect(&rect, cxClient / 2 - 50, cyClient / 2 - 50, cxClient / 2 + 50, cyClient / 2 + 50);
            InflateRect(&rect, 50, 30);
            FillRect(hdc, &rect, hBrush);
    //7.setrectEmpty    设置矩形为空
            FillRect(hdc, &rect, hBrush);    //不会显示
    //8.copyrect    多用在映射中
            CopyRect(&rect2, &rect);    //将rect的坐标拷贝给rect2
            SetRectEmpty(&rect);//将矩形的各个坐标设为0,则会显示rect2
            hBrush = CreateSolidBrush(RGB(255, 255, 0));
            FillRect(hdc, &rect2, hBrush);
    //9.intersectrect    两个矩形交集
    //10.unionrect        两个矩形并集
    //11.Isrectempty    判断是否为空
    //12.ptinrect        判断点是否在矩形中(重要)
    
    
            EndPaint(hwnd, &ps);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        }
    
    
        return DefWindowProc(hwnd, message, wParam, lParam);
    }
  • 相关阅读:
    并发编程学习笔记(七、Thread源码分析)
    并发编程学习笔记(六、线程组)
    并发编程学习笔记(五、线程中常用的方法)
    并发编程学习笔记(四、线程的优先级)
    并发编程学习笔记(三、如何安全地终止线程)
    sql server登陆账号时遇到233错误
    github上传shh公匙问题
    mysql简单复习
    idea导入jstl标签库
    山高有攀头,路远有奔头~
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8511978.html
Copyright © 2020-2023  润新知