[VC ] doc/view 架構下如何對memory dc進行get …
請教前輩~
我現在的開發環境是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)