• 学习windows编程 day4 之 设置画刷


    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        HDC hdc;
        PAINTSTRUCT ps;
        RECT rect;
        static HBRUSH hBrush, hOldBrush;
        switch (message)
        {
        case WM_PAINT:
            hdc = BeginPaint(hwnd, &ps);
            GetClientRect(hwnd, &rect);
    //系统画刷数共有11个
    //画刷是使用8X8像素的位图进行填充的,而不是像素点。效率高
            //获取系统画刷(不要用deleteObject删除)
            //hBrush=GetStockObject(LTGRAY_BRUSH);//浅灰色
            //hBrush = GetStockObject(NULL_BRUSH);//不设置画刷,则是不进行填充
    
            //设置自定义画刷createSolidBrush,createHatchBrush,createBrushIndirect
            //hBrush=CreateSolidBrush(RGB(255,255,0));
            //hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 255, 0));//数字是样式 查手册
            LOGBRUSH bh[7];
            for (int i = 0; i < 6; i++)
            {
                bh[i].lbStyle = BS_HATCHED;
                bh[i].lbHatch = i;
                bh[i].lbColor = RGB(i * 40, 0, 0);
            }
    
            //最后一个是系统画刷,不需要删除
            bh[6].lbStyle = BS_SOLID;
            bh[6].lbColor = RGB(255, 255, 0);
    
            //用于记录所需要删除的画刷
            HBRUSH TotBrush[6];
    
            //绘制6个矩形,填充不同
            for (int i = 0; i < 7;i++)
            {
                hBrush=CreateBrushIndirect(&bh[i]);
                if (i < 6)
                    TotBrush[i] = hBrush;
                SelectObject(hdc, hBrush);
                Rectangle(hdc, 100 + 110 * i, 100, 200 + 110 * i, 200);
            }
    
            for (int i = 0; i < 6;i++)
            {
                DeleteObject(TotBrush[i]);
            }
    
            //替换画刷
    //        hOldBrush = SelectObject(hdc, hBrush);
            //中间写字
    //         SetTextAlign(hdc,TA_CENTER);
    //         TextOut(hdc, rect.right / 2, rect.bottom / 2, L"this a test", 11);
    //         SetTextAlign(hdc, TA_LEFT);
    //         Ellipse(hdc, rect.right / 4, rect.bottom / 4 , rect.right * 3 / 4, rect.bottom * 3 / 4);
    
            SelectObject(hdc, hOldBrush);
            EndPaint(hwnd, &ps);
            break;
        case WM_DESTROY:
            //DeleteObject(hBrush);//必须是自定义画刷
            PostQuitMessage(0);
            return 0;
        }
    
    
        return DefWindowProc(hwnd, message, wParam, lParam);
    }
  • 相关阅读:
    C# DataGridview转换为DataTable
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    ORM(Object Relational Mapping)框架
    C#开发小技巧
    Windows系统中Oracle11g R2 版本数据库卸载
    world特殊控制符输入
    Java中生成帮助文档
    Java类——JDBC链接、并操作MySQL数据库
    Java——实现对密码进行MD5加密
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8509619.html
Copyright © 2020-2023  润新知