Image-Routinen (z. B: Helligkeit ändern) ??

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Image-Routinen (z. B: Helligkeit ändern) ??

Beitrag von AND51 »

Hallo!

Ich möcht gern in mein Programm eine Funktion einbauen, die ein Bild (Image, kein Sprite) aufhellt und abdunkelt.

Nun kann ich das ja nach der Point/Plot-Methode machen, aber das ist erfahrungsgemäß sehr langsam. Gibt es da schnellere Methoden? Ich stieß in der Hilfe auf DrawingBuffer(), aber das scheint nur für Sprites zu sein, bei mir liegt aber ein stinknormales Image vor.

Ach ja: Wenn ihr Code habt, schön! Aber ich bin nicht abgeneigt davon, das selbst zu coden, wenn ihr also "nur" Ideen habt, dann auch her damit! :D

Noch eine Frage: Wie kann ich ein Wasserzeichen auf ein Bild malen? Ich meine z. B. einen beliebigen Text, der aber halb-transparent ist.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

GetDIBits_() - SetDIBits_()

Sufu
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Aha danke.

Die Funktion GetDIBits_() scheint sehr komplex... Kann mir vielleicht jemand die erwarteteten Parameter erklären?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hab sie selber noch nicht benutzt, könnte auch nur in die win32.hlp gucken.

thema wasserzeichen...

du hättest da (mindestens) zwei möglichkeiten:
1.) doch ein sprite draus machen, und die schrift als ein TranslucentSprite drüber displayn.
2.) wenn du eh schon bei pixelmanipulationen bist:
die schrift als maske erstellen, und anhand dieser maske die helligkeiten im zielbild leicht ändern.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ich dachte eher an sowas wie die 2. Möglichkeit, will aber bei Images bleiben.

Da gibt es doch auch DrawAlphaImage(), aber da steht nirgendwo was von Transparenz... Kearu, du bist doch der Sprite-Experte:

Muss man Nicht das Bild laden, dann mit TransparentSprite die Transparenz des Bildes bestimmen und dann mit DrawTransparentImage oder so speichern? Dann würde dieser befehl ja doch sinn machen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nein.

sprite und images haben nix miteinander zu tun.

DrawAlphaImage zeichnet ein Image unter berücksichtigung seines Alpha-Kanals.
dadurch steht für jeder pixel seine transparenz fest.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Stefan
Beiträge: 125
Registriert: 29.08.2004 10:51
Kontaktdaten:

Beitrag von Stefan »

geht ganz einfach mit SetColorAdjustment_() :wink:
allerdings funktioniert das dann nicht mit Win9X/Me
Benutzeravatar
dige
Beiträge: 1245
Registriert: 08.09.2004 08:53

Beitrag von dige »

Transparenten Text kann man auch so erstellen:

1. Foto laden ( Bild_1 )
2. Neues Bild erstellen mit schwarzem Hintergrund ( Bild_2 )
3. Text mit weisser Farbe drauf schreiben
4. Mit GetDIBits_() die Farbtabellen von beiden Bildern holen
5. Aus dem Textbild ( Bild_2 ) alle Farbewerte die <> 0 sind
mit den Farben aus Bild_1 mischen. (MixColors() )
6. Mit SetDIBits () die Farbtabelle wieder in Bild_1 zurückschreiben.

Zu GetDIBits_() und SetDIBits_() einfach mal das Forum durchsuchen.
Gibts massig Beispiele für...
MixColors() ist eine UserLib .. findet man auf Purearea.net
"Papa, ich laufe schneller - dann ist es nicht so weit."
Antworten