hur.cn - 华软网

 热门搜索

关于VC内存DC的问题

  作者:未知    来源:网络    更新时间:2011/4/15
我用了一个内存DC来在内存中绘图,然后将它通过BitBlt传送到屏幕上,然则发现一个问题

C++">
pMemDC->SetViewportOrg(100,100);
pMemDC->TextOut(0,0,_T("OK"));
dc.BitBlt(0,0,m_iWidth,m_iHeight,pMemDC,0,0,SRCCOPY);


这样子按理说是在屏幕的坐标(100,100)处显示“OK”,然则实际上照旧在左上角(0,0)处显示“OK”

C++">
dc.SetViewportOrg(100,100);
dc.TextOut(0,0,_T("OK"));


以下代码是直接用屏幕DC,就能够实现设置视图坐标,不明白为什么在内存DC中不行,求高手指教
---华软 网友回答---
pMemDC->SetViewportOrg(100,100);
pMemDC->TextOut(0,0,_T("OK"));
pMemDC->SetViewportOrg(0,0);
dc.BitBlt(0,0,m_iWidth,m_iHeight,pMemDC,0,0,SRCCOPY);




---华软网友回复---
引用 1 楼 zhaoze87 的回复:
pMemDC->SetViewportOrg(100,100);
pMemDC->TextOut(0,0,_T("OK"));
pMemDC->SetViewportOrg(0,0);
dc.BitBlt(0,0,m_iWidth,m_iHeight,pMemDC,0,0,SRCCOPY);


能够了,请问一下,这是为什么呢?
---华软网友回复---
引用 2 楼 wbb198811114 的回复:
引用 1 楼 zhaoze87 的回复:

pMemDC->SetViewportOrg(100,100);
pMemDC->TextOut(0,0,_T("OK"));
pMemDC->SetViewportOrg(0,0);
dc.BitBlt(0,0,m_iWidth,m_iHeight,pMemDC,0,0,SRCCOPY);


能够了,请问一下,这是为什么呢?

想通了,谢谢啊,呵呵
---华软网友回复---
引用 2 楼 wbb198811114 的回复:
引用 1 楼 zhaoze87 的回复:

pMemDC->SetViewportOrg(100,100);
pMemDC->TextOut(0,0,_T("OK"));
pMemDC->SetViewportOrg(0,0);
dc.BitBlt(0,0,m_iWidth,m_iHeight,pMemDC,0,0,SRCCOPY);


能够了,请问一下,这是为什么呢?


你设置了视图原点为100, 100,
dc.BitBlt(0,0,m_iWidth,m_iHeight,pMemDC,0,0,SRCCOPY);
执行这个的时候,从原点起头拷贝,当然也是从100,100处起头,所以看到的Ok照旧在0,0,处      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。