MFC在MM_ANISOTROPIC映射模式下使用双缓冲
来源:互联网 发布:2015网络歌曲男 编辑:程序博客网 时间:2024/06/01 08:51
OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)设置映射模式
pDC->SetMapMode(MM_ANISOTROPIC);
CRect rcClient;
GetClientRect(rcClient);
int cx = rcClient.Width();
int cy = rcClient.Height();
pDC->SetViewportOrg(cx/2, cy/2);
pDC->SetViewportExt(cx, -cy);
pDC->SetWindowExt(1000, 1000);
在OnDraw(CDC* pDC)实现如下
CRect rcClient;
GetClientRect(rcClient);
int cx = rcClient.Width();
int cy = rcClient.Height();
CDC memDc;
// 1.创建内存DC
memDc.CreateCompatibleDC(NULL);
CBitmap memBtm;
// 2.创建内存位图(没有该位图不能再内存中作图,相当于画板)
memBtm.CreateCompatibleBitmap(pDC, cx, cy);
memDc.SelectObject(&memBtm);
// 设置映射模式
memDc.SetMapMode(MM_ANISOTROPIC);
memDc.SetViewportOrg(cx/2, cy/2);
memDc.SetViewportExt(cx, -cy);
memDc.SetWindowExt(1000, 1000);
// 设备坐标转为逻辑坐标(特别重要)
memDc.DPtoLP(rcClient);
memDc.BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(),
pDC, rcClient.left, rcClient.top, SRCCOPY);
// 填充内存画板颜色,不然为黑色
memDc.FillSolidRect(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(),RGB(255,255,255));
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(234,23,53));
CPen *pOldPen = (CPen*)memDc.SelectObject(&pen);
memDc.MoveTo(0, 480);
memDc.LineTo(0, -480);
memDc.MoveTo(-480, 0);
memDc.LineTo(480, 0);
memDc.SelectObject(pOldPen);
pen.DeleteObject();
const double PI = 3.141592653589793238462643383279;
const int MultiplyEachUnitOnX = 50;
const int MultiplyEachUnitOnY = 500;
// 绘制正弦波
for(double i = -400; i < 400; i += 0.01)
{
double j = sin(PI / MultiplyEachUnitOnX * i) * MultiplyEachUnitOnY;
memDc.SetPixel(i, j, RGB(0, 0, 255));
}
pDC->BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(),
&memDc, rcClient.left, rcClient.top, SRCCOPY);
ReleaseDC(&memDc);
0 0
- MFC在MM_ANISOTROPIC映射模式下使用双缓冲
- MFC的映射方式MM_ANISOTROPIC
- MM_ISOTROPIC与MM_ANISOTROPIC映射模式
- 使用MFC在MM_LOMETRIC映射模式下画坐标轴
- 读《深入浅出MFC》笔记——关于MM_ANISOTROPIC影射模式
- 关于MM_ANISOTROPIC映射模式, 利用SetWindowExtEx和SetViewportExtEx函数设置Y轴方向的问题
- mfc下实现双缓冲的方法
- 关于映射模式和双缓冲的一些细节
- MFC GDI映射模式
- MFC 映射模式
- MFC 双缓冲画图
- MFC绘图,双缓冲
- MFC 双缓冲技术
- MFC 双缓冲 画图
- MFC双缓冲绘图
- MFC双缓冲绘图
- MFC 双缓冲实现
- MFC双缓冲绘图
- 1.3.2 查看服务器信息 3
- This element neither has attached source nor attached Javadoc
- c语言指针笔记
- Oracle视图的curd
- 1.3.2 查看服务器信息 4
- MFC在MM_ANISOTROPIC映射模式下使用双缓冲
- 图片异步加载AsyncTask以及ListView中item加载图片缓存
- sad truth
- 求圆的面积
- android 5.0适配TopActivity获取
- linux as6.3安装Oracle11g: 安装界面乱码
- 正则表达式 备忘 查询
- 搜狗手机浏览器测试管理方法(一)
- Java实现定时任务的三种方法