前言:
眼前朋友们对“mfc绘图控件”大致比较关切,朋友们都需要学习一些“mfc绘图控件”的相关内容。那么小编同时在网络上网罗了一些对于“mfc绘图控件””的相关知识,希望同学们能喜欢,我们快快来了解一下吧!图形控件
图像控件Picture Control用于显示图像以美化界面。
首先导入风景图片资源,并重命名ID:IDB_BITMAP_FJ。
位图属性选择类型:Bitmap,图像为资源ID:IDB_BITMAP_FJ。
动态加载位图
导入一张新图片资源,添加一个加载新图片按钮,并给图形控件绑定一个控件类型变量。
void CDemoDlg::OnBnClickedBtnLoadNewPic(){ HBITMAP hBmp = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP_FJ2)); m_pic.SetBitmap(hBmp);}什么是双缓冲技术?
在我们的电脑中,屏幕中显示的东西都会被放在一个显示缓存中,即单缓冲。在单缓冲中任何绘图的过程都会被立即显示在屏幕中,而双缓冲就是在这个显示的缓冲区外再建一个不显示的缓冲区,所有的绘图都在这个不显示的缓冲区进行,当一帧都绘制完毕后再拷贝到真正的显示缓冲区,这样就不会出现闪烁的现象。
void CDemoDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); // 1.创建第二缓冲区 CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap bmp; bmp.LoadBitmapW(IDB_BITMAP_LOGO); // 2.把位图放入第二缓冲区,并在画布上绘制内容 memDC.SelectObject(&bmp); memDC.SetBkMode(TRANSPARENT); memDC.TextOutW(0, 0, _T("我的logo")); // 3.将第二缓冲区内容拷贝到第一缓冲区,立即显示在屏幕上 CRect rect; GetClientRect(rect); dc.BitBlt(250, 680, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY); CDialogEx::OnPaint(); }视频讲解
视频加载中...
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。