在程序中需要绘制多条虚线,原本SelectObject了一个虚线画笔,然后用LineTo函数。结果画图效率很低,非常慢。于是把代码改成:
int nY = m_nTopMarginPos;
while (nY < m_nBottomMarginPos)
{
pDC->SetPixel(cali.point.x, nY, m_clrScale);
nY += 2;
}
这样就没问题了。
最近,需要把虚线改成实线,没有想太多,就把nY+=2这句改成nY+=1,结果又是很慢,找了半天,发现问题还出在此处。真是咄咄怪事,试着改成LineTo,又解决了。
只知其然,不知其所以然。
而且,这些线分水平与竖直两种,LineTo与SetPixel在两种情况上的表现也有区别,很想不通啊。
博客讲述了程序中绘制虚线和实线时遇到的效率问题。最初用SelectObject和LineTo绘制虚线效率低,改用SetPixel解决;将虚线改实线时,调整SetPixel参数又变慢,换回LineTo解决。还提到水平和竖直线上LineTo与SetPixel表现有区别。
7034

被折叠的 条评论
为什么被折叠?



