Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Erweitern Sie das Programm von Aufgabe 1 um ein verschiebbares Bild, das zu Programmstart aus dem Projektverzeichnis geladen wird (BMP-Format, 24 Bit). Ergänzen Sie ein Menü, mit dem man auf das Bild einen Weichzeichner-Effekt und einen Solarisationseffekt anwenden können.
Mögliche Erweiterungen: Bild per Datei-Dialogbox auswählen, weitere Effekte, Effekte mit Maus malen.
Hilfe zur Implementierung:
// zusätzliche globale Variablen
HDC hBitmapDC = NULL;
BITMAP bitmap;
// Initialisierung ganz zu Beginn von WinMain
HBITMAP hBitmap = (HBITMAP)LoadImage(hInstance, "MeinBild.bmp",
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bitmap);
HDC hScreenDC = CreateDC("DISPLAY", NULL, NULL, NULL);
hBitmapDC = CreateCompatibleDC(hScreenDC);
HBITMAP old_hBitmap = (HBITMAP)SelectObject(hBitmapDC, hBitmap);
// Freigabe am Ende von WinMain
SelectObject(hBitmapDC, old_hBitmap);
DeleteObject(hBitmap);
DeleteDC(hBitmapDC);
DeleteDC(hScreenDC);
// direktes Zeichnen nach WM_PAINT
// für Effekte Zwischenspeicher nötig!
{
int x, y;
for(x=0; x<bitmap.bmWidth; ++x)
{
for(y=0; y<bitmap.bmHeight;
++y)
{
COLORREF c = GetPixel(hBitmapDC, x, y); // Hier sind die RGB-Werte verfügbar!
SetPixel(hdc, x+42, y+13, c); // dumme Art, das Bild darzustellen
}
}
}