• MFC 绘图


    效果图:三张bmp图 + 字 + 竖线 组成

    在OnPaint()函数中

    1. CPaintDC dc(this);
    2. CRect rect;
    3. GetClientRect(&rect); //获取客户区矩形
    4. CDC dcBmp; //定义并创建一个内存设备环境
    5. dcBmp.CreateCompatibleDC(&dc); //创建兼容性DC
    6. CBitmap bmpBackground;
    7. bmpBackground.LoadBitmap(IDB_BITMAP8); //载入资源中图片(背景图)
    8. BITMAP m_bitmap; //图片变量
    9. bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
    10. //将位图选入临时内存设备环境
    11. CBitmap *pbmpOld = dcBmp.SelectObject(&bmpBackground);
    12. int x = 100; //在那个位置开始画
    13. int y = 100;
    14. //调用函数显示图片(不透明)
    15. dc.BitBlt(x, y, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, SRCCOPY);
    16. dcBmp.SelectObject(pbmpOld); //恢复CDC
    17. bmpBackground.DeleteObject();//删除,以便后面复用该变量
    18. //对于矩形背景,也可以直接画矩形
    19. {
    20. //圆角矩形,填充颜色,边框颜色不同
    21. //CBrush frameBrush, bgbrush;
    22. //bgbrush.CreateSolidBrush(RGB(231, 243, 235));//主窗体背景色画刷
    23. //frameBrush.CreateSolidBrush(RGB(183, 211, 190));
    24. //CRgn rgn;
    25. //rgn.CreateRoundRectRgn(x, y, x + 346, y + 58, 16, 16);//圆角的窗体区域
    26. //dc.FillRgn(&rgn, &bgbrush);
    27. //dc.FrameRgn(&rgn, &frameBrush, 3, 3);
    28. }
    29. bmpBackground.LoadBitmap(IDB_BITMAP9); //载入资源中图片(状态图)
    30. bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
    31. pbmpOld = dcBmp.SelectObject(&bmpBackground);
    32. //调用函数显示图片
    33. //dc.BitBlt(x + 16, y + 8, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, SRCCOPY);
    34. //显示图片,透明,根据颜色参数进行透明,比如给的白色,白色就是透明色
    35. dc.TransparentBlt(x + 16, y + 8, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, RGB(255, 255, 255));
    36. dcBmp.SelectObject(pbmpOld); //恢复CDC
    37. bmpBackground.DeleteObject();//删除
    38. bmpBackground.LoadBitmap(IDB_BITMAP10); //载入资源中图片(LIS图标)
    39. bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
    40. pbmpOld = dcBmp.SelectObject(&bmpBackground);
    41. //调用函数显示图片StretchBlt显示形状可变
    42. //dcBmp.BitBlt(x + 207, y + 8, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, SRCCOPY); //画bmp,不透明
    43. dc.TransparentBlt(x + 207, y + 8, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, RGB(255, 255, 255));
    44. dcBmp.SelectObject(pbmpOld); //恢复CDC
    45. bmpBackground.DeleteObject();//删除
    46. dcBmp.DeleteDC(); //删除cdc
    47. //画字
    48. CFont new_font;
    49. //创建字体宋体格式
    50. new_font.CreateFont(14, // nHeight
    51. 0, //以逻辑单位方式指定字体中字符的平均宽度
    52. 0, //指定偏离垂线和X轴在显示面上的夹角(单位:0.1度)
    53. 0, //指定字符串基线和X轴之间的夹角(单位:0.1度)
    54. FW_BOLD, //指定字体磅数
    55. FALSE, //是不是斜体
    56. FALSE, //加不加下划线
    57. 0, //指定是否是字体字符突出
    58. ANSI_CHARSET, //指定字体的字符集
    59. OUT_DEFAULT_PRECIS, //指定所需的输出精度
    60. CLIP_DEFAULT_PRECIS, //指定所需的剪贴精度
    61. DEFAULT_QUALITY, //指示字体的输出质量
    62. DEFAULT_PITCH | FF_SWISS, //指定字体的间距和家族
    63. _T("思源黑体") //指定字体的字样名称
    64. );
    65. //选择该字体进入PDC
    66. CFont* default_font = dc.SelectObject(&new_font);
    67. //设置字体背景为透明
    68. dc.SetBkMode(TRANSPARENT);
    69. //设置字体颜色
    70. dc.SetTextColor(RGB(0, 0, 0));
    71. //显示文本,左对齐
    72. CRect textRect;
    73. textRect.SetRect(x + 88, y + 11, x + 88 + 98, y + 11 + 14);
    74. dc.DrawText(CString("状态"), textRect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
    75. textRect.SetRect(x + 271, y + 11, x + 271 + 50, y + 11 + 14);
    76. dc.DrawText(CString("LIS"), textRect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
    77. //恢复PDC的缺省字体
    78. dc.SelectObject(default_font);
    79. //释放font对象
    80. new_font.DeleteObject();
    81. //画线
    82. CPen newPen, *oldPen;
    83. newPen.CreatePen(PS_SOLID, 2, RGB(219, 219, 219));
    84. oldPen = dc.SelectObject(&newPen);//选择改画笔
    85. dc.MoveTo(x+198, y+16);
    86. dc.LineTo(x + 198, y + 16 + 24);
    87. dc.SelectObject(oldPen); //恢复
    88. newPen.DeleteObject();

  • 相关阅读:
    链表题(1)
    Flink基础实操-计算单词出现次数
    iOS开发-Lottie实现下拉刷新动画效果
    HTML之如何下载网页中的音频(二)
    Redis进阶:主从复制、集群搭建
    前端自动脚本中常见的几个问题,你遇到了吗?
    React-hook-form-mui(三):表单验证
    echarts仪表盘属性,干货满满
    Springboot科研项目申报网站设计6109r计算机毕业设计-课程设计-期末作业-毕设程序代做
    Attention is all you need (一)
  • 原文地址:https://blog.csdn.net/HUANG_XIAOJUN/article/details/133066774