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);
}