CDC里的画线方式

qjgdftxmu 2014-11-04 08:46:47
我看计算机图形,所以用SetPixel的方法来画线。
可以如果要用来填充一个矩形的的时候,就像下面的代码

for(int i = 0; i<100; i++)
for(int j = 0; j<100; j++)
{
pDC->SetPix(i, j, RGB(0,0,0));
}


发线代码慢的可怕,可是如果把内循环换成
pDC->LineTo()的话速度就会快很多。

想问一下,MFC中的LineTo是怎么实现的?
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qjgdftxmu 2014-11-05
  • 打赏
  • 举报
回复
引用 2 楼 relaxisland 的回复:
应该是在显存 画好 直接贴上去的吧 你入你写文件, 一个字节一个自己的写, 和一下子写一行,速度也是不一样的。
对的,我应该用双缓冲的。
qxw_csdn 2014-11-05
  • 打赏
  • 举报
回复
明白了,谢谢,学习,学习。
relaxisland 2014-11-04
  • 打赏
  • 举报
回复
应该是在显存 画好 直接贴上去的吧 你入你写文件, 一个字节一个自己的写, 和一下子写一行,速度也是不一样的。
笨笨仔 2014-11-04
  • 打赏
  • 举报
回复
用点画线?给你2个画线函数试试吧


// 画直线
void CDrawPic::DrawLine(CDC * pdc, 
						int x1, int y1,		// 起点
						int x2, int y2,		// 终点
						int style,			// 风格:PS_SOLID PS_DASH 等
						int pen,			// 笔宽
						COLORREF color)		// 画笔颜色
{
	CPen pn;
	pn.CreatePen(style,pen,color);
	pdc->SetBkMode(TRANSPARENT);					// 设置透明背景
	CPen* oldP=pdc->SelectObject(&pn);
	pdc->MoveTo(x1,y1);
	pdc->LineTo(x2,y2);

	pdc->SelectObject(oldP);
}

void CDrawPic::DrawLine(CDC * pdc, 
						POINT p1,			// 起点
						POINT p2,			// 终点
						int style,			// 风格:PS_SOLID PS_DASH 等
						int pen, 
						COLORREF color)
{
	DrawLine(pdc,p1.x,p1.y,p2.x,p2.y,style,pen,color);
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧