MFC-GUI绘图相关摘要
来源:互联网 发布:配置php开发环境 编辑:程序博客网 时间:2024/05/20 11:25
1、获取绘图设备DC,HDC
CWnd* cWnd = AfxGetApp()->m_pMainWnd = AfxGetMainWnd();HWND hWnd = cWnd->m_hWnd = cWnd->GetSafeHwnd();CDC * p_cdc = cWnd->GetDC();//一般获取cdc的用法,临时型的,刷新就没了CDC * m_cdc;m_cdc->CreateCompatibleDC(p_cdc);//缓冲区DCCPaintDC cpdc(cWnd);//只能用在OnPaint方法里,只是客户区OnPaint CClientDC ccdc(cWnd);//绘制客户区,也是临时的,刷新就没了CWindowDC *wdc = (CWindowDC*)cWnd->GetWindowDC();// 绘制整个窗口OnNcPaintHDC hdc = p_cdc->GetSafeHdc();ReleaseDC(dc);// 释放获取的绘图设备,CPaintDC不需要释放,GetDC后必须ReleaseDCdc->DeleteDC();// 删除DC,除非你自己Create的,否则不允许你删除dc->Detach(); // 分离DC,而不删除,Attach后,必须Detach
2、坐标刷新相关
// 获取绘图设备的区域CRect rect;GetWindowRect(rect);//获取整个窗口的区域GetClientRect(rect);// 获取客户区的区域// 强制刷新客户区OnPaint,带NULL,全屏刷新InvalidateRect();//TRUE表示背景覆盖Invalidate();//上面函数带NULL的效果// 坐标系转化ScreenToClient();//屏幕坐标转化成客户区ClientToScreen();//客户区坐标转化成屏幕// 选择系统GDI对象dc->GetStockObject(NULL_BRUSH);
3、颜色COLORREF,GetB(R|G)Value获取单通道色
COLORREF rgb,rgba,rgbold;rgb = RGB(255,0,0); //三原色rgba = RGBA(255,0,0,0.5); // 三原色+透明度COLORREF cr = GetSysColor(COLOR_BTNFACE);//获取系统颜色rgbold = SetBkColor(hdc,rgb); // 设置绘图设备文字的背景色rgbold = p_cdc->SetBkColor(rgb); // 设置绘图设备文字的背景色dc->SetBkMode(TRANSPARENT); // 设置绘图设备文字的背景为无色透明dc->SetTextColor();// 设置文字的颜色dc->FillSolidRect(rect, RGB(255,0,0));//为绘图设备填充背景色
4、画笔CPen 及 HPEN
CPen *pen = new CPen(PS_SOLID, 5, rgb);//构造画笔分别是样式,宽度,颜色pen->CreatePen(PS_SOLID, 5, rgb); // 创造画笔,记得DeleteObjectpen->FromHandle(hpen);CPen *oldpen = p_cdc->SelectObject(pen);pen.DeleteObject();CreateFontIndirect();//把详细信息LogPen转化成CPenGetLogPen();//把CPen转化成LogPen,其他object也是一样
5、字体
LOGFONT lf; // 字体结构体memset(&lf,0,sizeof(LOGFONT));//初始化,分配内存_tcscpy_s(lf.lfFaceName, LF_FACESIZE,_T("Consolas"));//设置字体类型lf.lfItalic = TRUE; // 斜体lf.lfUnderline = TRUE; // 字体下划线lf.lfHeight = 100; // 字体高度,单位像素lf.lfWidth = 50; // 字体宽度lf.lfWeight = FW_BOLD; // 字体的重量,加粗CFont ft; //字体对象ft.CreateFontIndirect(&lf); // 根据字体结构体创建对象CFont font;font.CreatePointFont(200, L"Consolas");//简单创建CFontDialog fontDlg(&lf); // 可以通过界面改变字体内容CFont * oldft = p_cdc->SelectObject(&ft); // 载入字体p_cdc->SetTextColor(fontDlg.GetColor()); // 设置字体颜色p_cdc->TextOutW(100,300,_T("Hello World")); // 绘制字体
6、位图CBitmap
CBitmap bmp,bmp_oem,bmp_map,bmp_crt,bmp_cpb;bmp.LoadBitmapW(IDB_BITMAP1); // 加载普通位图bmp_oem.LoadOEMBitmap(OBM_CHECK); // 加载系统默认位图bmp_map.LoadMappedBitmap(IDB_BITMAP1); // 加载映射系统的位图资源bmp_crt.CreateBitmap(100, 200,100,200,NULL); // 创建位图bmp_cpb.CreateCompatibleBitmap(&ccdc,100,200); // 创建兼容绘图设备的位图
7、画刷CBrush
CBrush bs, bs_bmp,bs_hatch,bs_sys;bs.CreateSolidBrush(RGB(255,0,0)); // 实心画刷bs_hatch.CreateHatchBrush(HS_CROSS, RGB(255, 0, 0)); // 带阴影画刷bs_bmp.CreatePatternBrush(&bmp); // 位图画刷bs_sys.CreateSysColorBrush(COLOR_WINDOW); // 系统颜色画刷CBrush * oldbs = dc->SelectObject(&bs_sys); // 载入画刷dc->Rectangle(CRect(50,50,100,200)); // 画一个矩形
8、双缓冲绘图
CBitmap * oldbmp = m_cdc.SelectObject(&bmp_cpb);dc->BitBlt(rc.left, rc.top, rc.Width(), rc.Height(), &m_cdc, 0, 0, SRCCOPY);dc->StretchBlt(rc.left, rc.top, rc.Width(), rc.Height(), &m_cdc, 0, 0,100,100, SRCCOPY);
0 0
- MFC-GUI绘图相关摘要
- 一些MFC绘图相关
- GUI绘图
- MFC学习笔记 简单绘图及相关函数
- MFC绘图
- MFC绘图
- MFC绘图
- MFC绘图
- mfc 绘图
- MFC绘图
- MFC 绘图
- MFC 绘图
- MFC 绘图
- MFC绘图
- MFC绘图
- MFC--绘图
- MFC绘图
- MFC绘图
- UVALive2889 Palindrome Numbers(回文数,神级代码....)
- Qt入门可能会遇到的一些问题
- 括号匹配(二)
- Object-c对象和消息传递
- Servlet详解
- MFC-GUI绘图相关摘要
- 阿里云ECS+Gunicorn+Supervisor+Nginx部署Flask
- 2016华为机试题:大数相减
- 一个月有几天
- Git 放弃本地修改 强制更新
- LinkIt Assist 2502开发笔记2: 固件的更新
- 括号匹配问题(一)
- 单例模式及常见写法分析(设计模式01)
- 设置优先级 POJ 1065 Wooden Sticks