请教画图处理!!
画图时,数据一多,明显看得出画图的过程,就是一笔一划得慢慢生成,怎么才可让它一次显示出整张图阿? 问题点数:100、回复次数:8Top
1 楼ma2jun()回复于 2002-05-23 15:49:07 得分 0
我个人认为,这是矢量图绘制肯定避免不了的问题,如果用内存DC虽然不是一笔一划,可以闪烁太厉害。看看autocad也是如此。
唯一能改善的就是优化绘制代码。Top
2 楼whirl()回复于 2002-05-23 16:07:06 得分 0
问一下,内存DC怎么用阿?Top
3 楼zPerry(旧日重来)回复于 2002-05-23 16:15:04 得分 30
HDC hMemDC=CreateDC(hdc)
CreateBitmapCompatible()
再SelectObject()将位图选入hMemDC
在内存DC中画图,再BitBlt()拷入窗口中
用后将hMemDC和位图DeleteTop
4 楼littleid(小id)回复于 2002-05-23 16:17:29 得分 50
CPoint point;
CRect rect;
GetClientRect(rect);
CDC memDC;
CPen newPen;
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(bmp);
memDC.SelectStockObject(WHITE_PEN);
memDC.MoveTo(1,1);
memDC.LineTo(100,100);
pDC->BitBlt(0,0, rect.Width(),rect.Height(),&memDC, 0,0,SRCCOPY );
这一段代码实现了画一条线段的功能。Top
5 楼littleid(小id)回复于 2002-05-23 16:24:07 得分 0
以上代码加在ondraw里就行Top
6 楼smallwei()回复于 2002-05-23 16:25:38 得分 20
你要想不闪烁,可以先创建一张和你绘图区域相同大小的位图,然后在这张图上画你要画的内容,全部画好了就把整张位图BLT到你的绘图区,可以减少闪烁,但这样做也有缺点,就是在你没有画完之前是什么也看不到的!如果你的绘图过程非常的耗时,你只有修改你的绘图算法或者用DX...Top
7 楼Q_O()回复于 2002-05-23 16:26:12 得分 0
先在内存DC里面画好。再copy到屏幕上去。Top
8 楼neophyte(vc++_help)回复于 2002-05-23 16:29:52 得分 0
先在内存中画好!
而后呢??
再!!
bitblt()
上去,肯定看不出来的!!
不信你可以try!!
Top




