bilder gespiegelt darstellen???
-
Guck dir mal GetBitmapBits an
-
// Zeigt das in [hdcSrc] enthaltene Bitmap mit der Breite [width] // und der Höhe [height] im Device Context [hdcDest] kopfüber an. // Die linke obere Ecke des Bitmaps muss in [hdcSrc] bei (0,0) // sein. // ACHTUNG: PlgBlt() ist für die Win9x-Versionen nicht verfügbar. BOOL ToppleBitmap(HDC hdcDest, HDC hdcSrc, int width, int height) { POINT pt[3] = {{0, height-1}, {width, height-1}, {0,-1}}; return PlgBlt(hdcDest, pt, hdcSrc, 0, 0, width, height, NULL, 0, 0); }
-
Oder meintest du es anders gespiegelt? Na dann...
#define RB_HORIZONTAL 0 #define RB_VERTICAL 1 // Spiegelt das in [hdcSrc] enthaltene Bitmap mit der Breite [width] // und der Höhe [height] gemäß der in [wFlags] angegebenen Konstanten. // Die linke obere Ecke des Bitmaps muss in [hdcSrc] bei (0,0) // sein. Das gespiegelte Bitmap wird im DeviceContext [hdcDest] bei // (0,0) gemalt. // ACHTUNG: PlgBlt() ist für die Win9x-Versionen nicht verfügbar. BOOL ReflectBitmap(HDC hdcDest, HDC hdcSrc, int width, int height, WORD wFlags) { POINT pt_h[3] = {{width-1,0}, {-1,0}, {width-1,height}}; POINT pt_v[3] = {{0,height-1}, {width,height-1}, {0,-1}}; LPPOINT lppt; if(wFlags == RB_HORIZONTAL) lppt = pt_h; else if(wFlags == RB_VERTICAL) lppt = pt_v; else return FALSE; return PlgBlt(hdcDest, lppt, hdcSrc, 0, 0, width, height, NULL, 0, 0); }
-
das mit PlgBlt() sieht vielversprechend aus, das werd ich jetzt mal gleich
testen. Ist wohl die einfachere Variante gegenüber dem Vorschlag von deus.Dank euch beiden.
-
RobRoy schrieb:
Ist wohl die einfachere Variante gegenüber dem Vorschlag von deus.
Jo, so siehts aus.
-
Hi,
ich bin zwar kein ultimativer Fan von Win98 (zum Spielen super, zum Arbeiten total unbrauchbar), aber ich denke es ist noch nicht an der Zeit übermäßig viele "in-Win9x-nicht-verfügbar-Funktionen" zu verwenden, da immer noch einige Win9x verwenden (Microsoft wollte diese User nicht an Linux verlieren und hat deshalb den Support für Win98/... verlängert :p => Win9x ist noch nicht tod) und PlgBlt ist nur in WinXP/2k verfügbar.
Allerdings hängt das natürlich auch von der Programmart ab.
Überlegs dir.Grüße Rapha
-
Na, dann eben
#define RB_HORIZONTAL 0 #define RB_VERTICAL 1 BOOL ReflectBitmap(HDC hdcDest, HDC hdcSrc, int width, int height, WORD wFlags) { if(wFlags == RB_HORIZONTAL) return StretchBlt(hdcDest, 0, 0, width, height, hdcSrc, width-1, 0, -width, height, SRCCOPY); else if(wFlags == RB_VERTICAL) return StretchBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, height-1, width, -height, SRCCOPY); else return FALSE; }Ist diesmal mit StretchBlt, was auf jedem System läuft.

-
also PlgBlt() sowie StretchBlt() funzt, ich werde mich aber für die StretchBlt()-Variante entscheiden, da das Programm später auf möglichst jedem System laufen sollte.
Besten Dank nochmal WebFritzi, auch dir Rapha für die Anmerkung bzl. Windows9x.
Thanks...
-
Gerngeschehen. Hat mir auch Spaß gemacht, das zusammenzustellen.
-
PlgBlt soll auch dafür dienen drehen zu können. Würde gern 90° ein Bild drehen, kann es bisher nur mit StretchBlt verzerren. Kann mir jemand sagen wie das mit dem drehen bei PlgBlt funktioniert? Ich bin da absolut ahnungslos.
