000
15.05.2003, 11:31 Uhr
~freedoom
Gast
|
hallo leute
ich hab ein problem:
mit diesem Code erzeuge ich ein Bitmap-speicher und setze die pixel entsp. Die Farbinformationen wird dann auf hbitmap übertragen. Und dann tue ich mit StretchBlt das bitmap hbitmap 4-Fach vergrössert aus geben. wenn die Bildschiermauflösung 32-Bit ist wird das bitmap nicht selektiert hMemDC.SelectObject(hbitmap); -> -> darum muss ich das Bitmap geräteunabhänhig erzeugen und das geht glaube ich mit CreateDIBitmap(...) Aber ich verstehe nicht wie ich die Parameter setzen soll Kann mir da jemand bitte helfen.
danke für jede hilfe
[cpp] CBitmap hbitmap, bit; //bit.LoadBitmap(IDB_BITMAP2);// grün gerasterte-Bitmap if(! hbitmap.CreateBitmap(128, 64, 1, 16, NULL) ) MessageBox("Fehler bei CreateBitmap"); BITMAP bm; hbitmap.GetObject( sizeof( BITMAP ), &bm ); //unsigned char *pData = new unsigned char [bm.bmHeight*bm.bmWidthBytes]; // Loop through and set the buffer values so that the pattern will be solid red. for( int y=0; y<bm.bmHeight; y++ ) for( int x=0; x<bm.bmWidth; x++ ) { //pData[x*2 + y] = 14; //pData[x*2 + 1+ y] = 12; TEST_ARRAY[x][y] = RGB(0,128,0); }
hbitmap.SetBitmapBits( 4*129, TEST_ARRAY ); // Delete the data buffer. //delete [] pData;
//HDC hMemDC = ::CreateCompatibleDC(NULL); CDC hMemDC; if(! hMemDC.CreateCompatibleDC(NULL) ) MessageBox("Fehler bei CreateCompatibleDC");
if(! hMemDC.SelectObject( hbitmap) ) MessageBox("Fehler bei SelectObject");
::StretchBlt(dc.m_hDC,// Ziel FensterRechteck.left+2, FensterRechteck.top+2, (bm.bmWidth*4),//FensterRechteck.right - FensterRechteck.left, (bm.bmHeight*4),//FensterRechteck.bottom - FensterRechteck.top, hMemDC,// Quelle 0, 0, bm.bmWidth,//512 bm.bmHeight,//256 SRCCOPY); [cpp/] |