绘图效率如何提升的问题
void InitBackgroundImage(CDC* pDC)
{
if (m_nModMove==VIEW_MOD_MOVE)
return;
DestroyBackgroundImage();
CRect rectClient;
GetClientRect(&rectClient);
CDC dcBkgnd;
m_dcMemory.CreateCompatibleDC(pDC);
ASSERT(m_dcMemory.GetSafeHdc());
m_bitmapTemp.CreateCompatibleBitmap(pDC,m_nScreenWidth, m_nScreenHeight);
ASSERT(m_bitmapTemp.GetSafeHandle());
m_pOldBitmap = m_dcMemory.SelectObject(&m_bitmapTemp);
m_dcMemory.FillSolidRect(0,0,m_nScreenWidth, m_nScreenHeight,VIEWCOLOR);
DrawBox(&m_dcMemory);//绘制自定义背景图
}
void OnPaint()
{
InitBackgroundImage(&dc);//回背景,背景不改变时不绘制
CDC dcMemory;
dcMemory.CreateCompatibleDC(&m_dcMemory);
CBitmap bmp;
bmp.CreateCompatibleBitmap(&m_dcMemory, m_nScreenWidth, m_nScreenHeight);
CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);
dcMemory.SetBkMode(TRANSPARENT);
dcMemory.BitBlt(0, 0, m_nScreenWidth, m_nScreenHeight, &m_dcMemory, 0, 0, SRCCOPY);//CDC拷贝
DrawMoveingBox(&dcMemory);//画移动的矩形
dc.BitBlt(0,0,m_nScreenWidth,m_nScreenHeight,&dcMemory,0,0,SRCCOPY);//绘制图片到主DC
dcMemory.SelectObject(pOldBitmap);
dcMemory.DeleteDC();
bmp.DeleteObject();
}
如代码所示m_dcMemory是成员变量,在InitBackgroundImage函数中生成目的是保存背景,不用频繁画背景,只需要在背景上画移动的的矩形即可
理论上我认为这样绘图应该是很快的,但实际测试却发现这样绘图竟然也会在矩形多的时候很卡
...全文
相关推荐
AI提升科研绘图效率[项目代码]
本文介绍了如何利用DeepSeek和Origin软件提升科研绘图的效率,包括数据预处理、智能配色、参数批量修改和格式转换自动化等四大增效场景。通过实战案例展示了Nature级热图的复现过程,并对比了传统耗时与AI辅助耗时的差异,效率提升显著。文章还提供了三个核心技巧和常见问题的解决方案,帮助科研人员实现“所想即所得”的绘图体验。
Auto CAD绘图技巧及常见问题的解决.pdf
Auto CAD绘图技巧及常见问题的解决.pdf
C#中使用双缓冲以及BitBlt提高GDI+绘图效率的示例程序
利用GDI+在Form中绘制60*60个圆点,显示帧速,使用三种不同方法,分别是: 1.直接绘制 2.使用双缓冲 3.使用BitBlt函数 对比三种函数的帧速,以及提速效果 开发环境为vs2008
提高CAD绘图效率的实践.pdf
提高CAD绘图效率的实践.pdf
C# 利用缓冲提高绘图效率
C# 利用缓冲提高绘图效率,vs05版本,下载既可运行


界面
