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

在OnPaint()函数中
- CPaintDC dc(this);
-
- CRect rect;
- GetClientRect(&rect); //获取客户区矩形
- CDC dcBmp; //定义并创建一个内存设备环境
- dcBmp.CreateCompatibleDC(&dc); //创建兼容性DC
- CBitmap bmpBackground;
- bmpBackground.LoadBitmap(IDB_BITMAP8); //载入资源中图片(背景图)
-
- BITMAP m_bitmap; //图片变量
- bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
- //将位图选入临时内存设备环境
- CBitmap *pbmpOld = dcBmp.SelectObject(&bmpBackground);
-
- int x = 100; //在那个位置开始画
- int y = 100;
- //调用函数显示图片(不透明)
- dc.BitBlt(x, y, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, SRCCOPY);
- dcBmp.SelectObject(pbmpOld); //恢复CDC
- bmpBackground.DeleteObject();//删除,以便后面复用该变量
-
-
- //对于矩形背景,也可以直接画矩形
- {
- //圆角矩形,填充颜色,边框颜色不同
- //CBrush frameBrush, bgbrush;
- //bgbrush.CreateSolidBrush(RGB(231, 243, 235));//主窗体背景色画刷
- //frameBrush.CreateSolidBrush(RGB(183, 211, 190));
- //CRgn rgn;
- //rgn.CreateRoundRectRgn(x, y, x + 346, y + 58, 16, 16);//圆角的窗体区域
- //dc.FillRgn(&rgn, &bgbrush);
- //dc.FrameRgn(&rgn, &frameBrush, 3, 3);
- }
-
-
-
- bmpBackground.LoadBitmap(IDB_BITMAP9); //载入资源中图片(状态图)
- bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
- pbmpOld = dcBmp.SelectObject(&bmpBackground);
- //调用函数显示图片
- //dc.BitBlt(x + 16, y + 8, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, SRCCOPY);
- //显示图片,透明,根据颜色参数进行透明,比如给的白色,白色就是透明色
- 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));
- dcBmp.SelectObject(pbmpOld); //恢复CDC
- bmpBackground.DeleteObject();//删除
-
- bmpBackground.LoadBitmap(IDB_BITMAP10); //载入资源中图片(LIS图标)
- bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
- pbmpOld = dcBmp.SelectObject(&bmpBackground);
- //调用函数显示图片StretchBlt显示形状可变
- //dcBmp.BitBlt(x + 207, y + 8, m_bitmap.bmWidth, m_bitmap.bmHeight, &dcBmp, 0, 0, SRCCOPY); //画bmp,不透明
- 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));
- dcBmp.SelectObject(pbmpOld); //恢复CDC
- bmpBackground.DeleteObject();//删除
-
- dcBmp.DeleteDC(); //删除cdc
- //画字
- CFont new_font;
- //创建字体宋体格式
- new_font.CreateFont(14, // nHeight
- 0, //以逻辑单位方式指定字体中字符的平均宽度
- 0, //指定偏离垂线和X轴在显示面上的夹角(单位:0.1度)
- 0, //指定字符串基线和X轴之间的夹角(单位:0.1度)
- FW_BOLD, //指定字体磅数
- FALSE, //是不是斜体
- FALSE, //加不加下划线
- 0, //指定是否是字体字符突出
- ANSI_CHARSET, //指定字体的字符集
- OUT_DEFAULT_PRECIS, //指定所需的输出精度
- CLIP_DEFAULT_PRECIS, //指定所需的剪贴精度
- DEFAULT_QUALITY, //指示字体的输出质量
- DEFAULT_PITCH | FF_SWISS, //指定字体的间距和家族
- _T("思源黑体") //指定字体的字样名称
- );
- //选择该字体进入PDC
- CFont* default_font = dc.SelectObject(&new_font);
- //设置字体背景为透明
- dc.SetBkMode(TRANSPARENT);
- //设置字体颜色
- dc.SetTextColor(RGB(0, 0, 0));
- //显示文本,左对齐
- CRect textRect;
- textRect.SetRect(x + 88, y + 11, x + 88 + 98, y + 11 + 14);
- dc.DrawText(CString("状态"), textRect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
- textRect.SetRect(x + 271, y + 11, x + 271 + 50, y + 11 + 14);
- dc.DrawText(CString("LIS"), textRect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
- //恢复PDC的缺省字体
- dc.SelectObject(default_font);
- //释放font对象
- new_font.DeleteObject();
-
- //画线
- CPen newPen, *oldPen;
- newPen.CreatePen(PS_SOLID, 2, RGB(219, 219, 219));
- oldPen = dc.SelectObject(&newPen);//选择改画笔
- dc.MoveTo(x+198, y+16);
- dc.LineTo(x + 198, y + 16 + 24);
- dc.SelectObject(oldPen); //恢复
- newPen.DeleteObject();