嗨,親愛的大師和專家編碼人員。無法顯示比CDC區域更高分辨率的位圖
我是不是要開始與我是個新手,不知道很多關於圖像編程可惜這些都是事實:(
我試圖顯示從位圖指針*的ImageData是一個圖像分辨率爲 1392x1032。我試圖在分辨率或尺寸627x474的區域繪製。
然而,重複嘗試似乎沒有工作。它工作時,我更改位圖圖像我創建從* ImageData寬度和高度分辨率或大小約627x474
我真的不知道h在嘗試從各種論壇和谷歌的所有可能的解決方案後解決這個問題。
pDC是CDC *,而memDC是在早期方法中初始化的CDC 此處未初始化的任何內容都是在其他方法中初始化的。
這是我的代碼親愛的謙卑的大師。請向我提供Yoda和Obi-Wan向Luke Skywalker提供的指導。
void DemoControl::ShowImage(void *ImageData)
{
int Width; //Width of Image From Camera
int Height; //Height of Image From Camera
int m_DisplayWidth = 627 ;//width of rectangle area to display
int m_DisplayHeight = 474;//height of rectangle area to display
GetImageSize(&Width, &Height) ; //this will return Width = 1392, Height 1032
CBitmap bitmap;
bitmap.CreateBitmap(Width,Height,32,1,ImageData);
CBitmap* pOldBitmap = memDC.SelectObject((CBitmap*)&bitmap);
pDC->BitBlt(22, 24, 627, 474, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject((CBitmap*)pOldBitmap);
ReleaseDC(pDC);
}
確定繼承人一些額外的零件
我想我應該解釋流程如何。
(a)在類(可以說DemoTestingDlg類)將通過CDC如下到另一個類(可以說DemoControl類)
m_Demo = new DemoControl ;
m_Demo->Initialisation(this, this->GetDC()) ;
(b)在DemoControl類
布爾DemoControl ::初始化(CDemoTestingDlg m_FormControl,CDC m_StaticDisplay){
pDC = m_StaticDisplay ;
memDC.CreateCompatibleDC(pDC);
}
的pDC和memDC是這樣在標題:
CDC* pDC ; CDC memDC;
(c)如果讓說的圖像被捕獲,圖像指針傳遞給DemoTestingDlg類隨後將調用一個showImage方法在演示控制類是我在問題中寫的方法。我做對了嗎?
注:這確實顯示的圖像,如果可以說它們是相同的尺寸(通過他們我的意思是CDC和位圖),所以我認爲我的CDC指針被正確地傳遞
試過了StretchBlt,但同樣的效果太不幸了:( – 2010-05-14 09:31:11
好吧,或者我誤解了你的問題,或者你做了StretchBlt的一些錯誤,StretchBlt會渲染一個1392x1032的圖像到627x424 DC ...你有什麼錯誤?我看到你試過的StretchBlt調用了嗎? – Goz 2010-05-14 09:36:57
pDC-> StretchBlt(22,24,627,474,&memDC,0,0,Width,Height,SRCCOPY); 它不顯示錯誤,比如bitblt,都沒有返回給我圖像當我把圖像的寬度和高度設置爲「寬度」和「高度」(參考上面的值)時,只有當我把寬度和高度與CDC區域627x474相同時才顯示圖像 – 2010-05-14 09:40:15