Título:Desenhando Bitmaps
Linguagem:C/C++
S.O.:Windows
Autor(es):Wenderson Teixeira
No Windows, quando se quer desenhar um bitmap, deve-se realizar diversos passos até obter alguma coisa visível na tela.
A maneira mais fácil e usual, é carregar um DDB (Bitmap Dependente de Dispositivo), selecioná-lo em um DC (Contexto de Dispositivo) em memória e desenhá-lo no DC da tela, acontece que fazer isso toda vez que ser desenhar um bitmap é um pouco chato e costuma acrescentar várias linhas de código ao programa, tornando-o difícil de se entender, por isso eu resolvi criar uma rotina que automatize parte desta tarefa. Esta rotina já faz todo o processo criar o DC temporário, selecionar o bitmap, desenhar no DC da tela, e liberar o DC temporário.
void far pascal DrawBitmap(HDC hdc, HBITMAP hBitmap, int x, int y) { BITMAP bm; HDC hdcTemp = CreateCompatibleDC(hdc); HBITMAP hOldBitmap = SelectObject(hdcTemp, hBitmap); // Pega as propriedades do bitmap. GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm); // Copia o bitmap do DC para o destino. BitBlt(hdc, x, y, bm.bmWidth, bm.bmHeight, hdcTemp, 0, 0, SRCCOPY); // Restaura o bitmap antigo do DC. SelectObject(hdcTemp, hOldBitmap); // Delete o DC em memória. DeleteObject(hdcTemp); }