mfc在OnPaint()函数中自绘简单图形实例

在对话框实现文件中OnPaint()函数中添加代码

cpp 复制代码
void CMyDialog::OnPaint()
{
    CPaintDC dc(this); // 设备上下文用于绘制
    
    // 调用基类的OnPaint(如果需要)
    // CDialog::OnPaint();
    
    // 创建红色画笔
    CPen redPen;
    redPen.CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
    CPen* pOldPen = dc.SelectObject(&redPen);
    
    // 创建红色画刷(填充矩形内部)
    CBrush redBrush;
    redBrush.CreateSolidBrush(RGB(255, 0, 0));
    CBrush* pOldBrush = dc.SelectObject(&redBrush);
    
    // 定义矩形的位置和大小
    // 例如:在对话框客户区(100,100)位置绘制50x50的红色矩形
    CRect rect(100, 100, 150, 150);
   //在Windows图形坐标系中,原点(0,0)通常位于客户区的左上角,x轴向右为正,y轴向下为正。
   // 第一个参数(100):矩形左边界的x坐标。
   // 第二个参数(100):矩形上边界的y坐标。
    //第三个参数(150):矩形右边界的x坐标。
    // 第四个参数(150):矩形下边界的y坐标。
    // 绘制矩形(填充)
    dc.Rectangle(rect);
    
    // 或者只绘制边框(不填充内部)
    // dc.SelectStockObject(NULL_BRUSH); // 空画刷
    // dc.Rectangle(rect);
    
    // 恢复原来的画笔和画刷
    dc.SelectObject(pOldPen);
    dc.SelectObject(pOldBrush);
}

运行程序

相关推荐
于小猿Sup8 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
小小编程路10 小时前
C++ 多线程与并发
java·jvm·c++
程序leo源11 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#
zh_xuan12 小时前
解决VS Code 控制台中文乱码
c++·vscode·乱码
郭涤生12 小时前
飞凌 RK3588 开发板同显 / 异显模式切换
c++·rk3588
计算机安禾12 小时前
【c++面向对象编程】第38篇:设计原则(二):里氏替换、接口隔离与依赖倒置
开发语言·c++
code_whiter13 小时前
C++1进阶(继承)
开发语言·c++
智者知已应修善业13 小时前
【51单片机LED闪烁10次数码管显示0-9】2023-12-14
c++·经验分享·笔记·算法·51单片机
智者知已应修善业13 小时前
【51单片机2按键控制1个敞亮LED灯闪烁和熄灭】2023-11-3
c++·经验分享·笔记·算法·51单片机
咩咦14 小时前
C++学习笔记20:日期类比较运算符重载
c++·学习笔记·类和对象·运算符重载·比较运算符·日期类