作者chiuling (chiu)
站内Programming
标题[VC ] doc/view 架构下如何对memory dc进行getpixel
时间Mon Aug 25 17:57:11 2008
请教前辈~
我现在的开发环境是VS2005 系统是XP
我原本的程式目的是要从档案读到的若干组多边形座标资料,视窗上画出多边形(region)
并上色,待绘图完成,依序读取萤幕上绘出的全部像素的颜色值
针对读取颜色值这一段,我原来的作法是在CRgnDoc类别的自定函式 UpdateView 及
GetPixelData,利用下方程式片段去取得萤幕上的颜色值
这个做法有个缺点就是如果有其它视窗盖在上面那就会读不到正确的像素颜色值,後来发
现用Memory DC可以解决了这个问题~~~~
可是现在改为在Memory DC绘图之後,想不出来该怎麽做在GetPixel时,是对绘在
MemoryDC的图做GetPixel
请大家指点指点迷津,谢谢^____^
┌────────────────────────────────────┐
│ Source Code │
├────────────────────────────────────┤
│ void CRgnDoc::UpdateView(void) │
│ { │
│ │
│ POSITION pos = GetFirstViewPosition(); │
│ CDC *pdc; │
│ │
│ while (pos != NULL) │
│ { │
│ CRgnView* pView = (CRgnView*)GetNextView(pos); │
│ pdc = pView->GetDC(); │
│ pView->OnDraw(pdc); │
│ GetPixelData(pdc); │
│ } │
│ } │
│ │
│ │
│ void CRgnDoc::GetPixelData(CDC* pDC) │
│ { │
│ for回圈---------x │
│ { │
│ for回圈---------y │
│ { │
│ COLORREF colorPixValue = pDC->GetPixel(x,y); │
│ int sid=GetRValue(colorPixValue)+(GetGValue(colorPixValue)*256)│
│ +(GetBValue(colorPixValue)*256*256); │
│ │
│ :略 │
│ } │
│ } │
│ } │
└────────────────────────────────────┘
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.64.235
※ 编辑: chiuling 来自: 140.112.64.235 (08/25 18:04)