Bitmap spiegeln / färben?
-
Hi Leute o.o/)
In meinem Programm füge ich Bitmaps auf die Art und weise:
CClientDC dc(this); BITMAP bm; Stein1.GetObject(sizeof(bm),&bm); CDC SpeicherDC; SpeicherDC.CreateCompatibleDC(&dc); SpeicherDC.SelectObject(&Stein1); CRect Rect; GetClientRect(&Rect); dc.BitBlt(20,120,bm.bmWidth,bm.bmHeight,&SpeicherDC,0,0,SRCCOPY);und jetzt würd mich interessieren, ob es eine Möglichkeit gibt, ein Bild gespiegelt zu zeichnen. Also anstatt dass eine Figur nach links guckt, soll sie nun nach rechts gucken.
Ich hoffe das geht so einfach o.ôZweite Frage:
Gibt es eine Möglichkeit dem Programm zu sagen, dass er alle Pixel mit der farbe xyz in einer anderen Farbe umfärben soll? o.ô am besten noch bevor mans zeichnen kann, denn der Endbenutzer soll nichts von der verfärbung mitkriegen.
Wenns nicht geht, dann mach ich halt für die gefärbten Bilder eigene Bitmaps oô ich dacht nur es geht etwas platzsparender und mich würd interessieren wie schwer das ist ^^Also danke schonmal für die Antworten ^^
-
Hmm ... pack die Bitmap in nen DC(muss de ja nicht anzeigen) ... geh den dann mit http://msdn2.microsoft.com/en-us/library/ms532304.aspx und http://msdn2.microsoft.com/en-us/library/ms532282.aspx durch ... musst de halt immer auf deinen Farbwert abgleichen ... und dann am ende packst du es wieder in eine CBitmap ... feddisch

-
(D)Evil schrieb:
Hmm ... pack die Bitmap in nen DC(muss de ja nicht anzeigen) ... geh den dann mit http://msdn2.microsoft.com/en-us/library/ms532304.aspx und http://msdn2.microsoft.com/en-us/library/ms532282.aspx durch ... musst de halt immer auf deinen Farbwert abgleichen ... und dann am ende packst du es wieder in eine CBitmap ... feddisch

Daran hab ich auch schon gedacht, aber als ich früher mal mit Get und SetPixel gearbeitet hat, hat es ein wenig gedauert, bis alle Pixel ersetzt wurden o.o
Geht das im DC schneller? Wenn ja, wäre meine erste Frage ja schon beantwortet^^
Ich versuch nämlich eine kleine Animation mit Bitmaps zu machen, wäre blöd, wenn der dann Zeit bräuchte um die Bilder zu färben oôVielen Dank für den Tipp ^^ ich wusste nicht, dass man Set und GetPixel auch im DC benutzen kann o.ô
Fehlt nur noch das mitm spiegeln^^
-

HDC hDC [in] Handle to the device context.
-
(D)Evil schrieb:

HDC hDC [in] Handle to the device context.Hab halt vorher nie in die msdn-datenbank bei setpixel geguckt, wir haben das damals in der Schule durchgenommen ^^
aber ich weiß es ja nun o.ô
Danke nochmal ^^Hat jemand Vorschläge zum Spiegeln? ^^
-
Horizontal spiegeln heißt alle Pixel zeilenweise von rechts nach links auslesen und links nach rechts schreiben.
Vertikal spiegeln heißt also alle Pixel spaltenweise von unten nach oben lesen und oben nach unten schreiben...ganz einfach eigentlich

-
Ich habe das jetzt nicht mehr genau im Kopf, aber wenn ich mich richtig erinnere, geben doch die ersten vier Parameter bei BitBlt(...) (Zeile 9) die Position an. Einfach mal ändern/vertauschen/Vorzeichen ändern. Zum Spiegeln müssten eigentlich rechte und linke Position einfach vertauscht werden...