2012-04-17 91 views
3

我正在寫一個程序,打開,旋轉,縮放,反轉顏色,轉換爲灰度並保存位圖(.bmp) 但我似乎並沒有得到轉換爲灰度(即黑色和白色)工作的所有其他代碼工作完美...Win32位圖顏色爲灰度

的代碼爲我的色彩反轉低於...

case 3: 
{ 
    hdc=GetDC(hWnd); 
    GetClientRect(hWnd,&rt); 
    BitBlt(hdc,0,0,rt.right,rt.bottom,hdc,0,0,NOTSRCCOPY); 
    ReleaseDC(NULL,hdc); 
} 

這似乎工作,但得到的DC,並試圖將其更改爲灰度ISN」使用BitBlt工作... 我想了解如何獲得DC並將其轉換爲灰度... wi napi 謝謝...

+1

是不是顏色反轉像'255-x'?現在,你正在做'〜x',這根本不是同一個計算。雖然這兩者都是顏色的「反轉」,但前者反轉色彩比例,而後者反轉像素比特模式。 – 2012-04-17 19:19:26

+0

'BitBlt'後'GetLastError()'返回什麼? – 2012-04-17 19:21:51

+0

BitBlt(hdc,0,0,rt.right,rt.bottom,hdc,0,0,NOTSRCCOPY);對於反轉位圖顏色正常工作...似乎沒有工作是使用bitblt將圖像轉換爲灰度...我試過BitBlt(hdc,0,0,rt.right,rt.bottom,hdc, 0,0,BLACKNESS |白化);但它不工作...也許我不會使用bitblt ... – Alex 2012-04-17 19:44:39

回答

2

Raymond Chen給出了一個complete example使用GDI中的顏色映射器使用BitBlt將彩色圖像轉換爲灰度。

+0

+在這個問題中的另一個代碼片段:http://stackoverflow.com/questions/8559341/how-to-convert-bitmap-to-灰度逐像素強度使用-GDI – 2012-04-17 19:32:21