GDI+: Bitmap in Bitmap zeichnen
GDI+: Bitmap in Bitmap zeichnen
Ich lade mit GdipCreateBitmapFromFile() 2 Image Dateien, einen Hintergrundlayer, einen Vordergrundlayer und dazwischen ein Layer mit unterschiedlichem Inhalt, den ich mit der LoadImage_() reinladen muss. Die 3 Images zusammen ergeben 1 Image, dass dann vom Programm benutzt wird. Wie kriege ich das nun hin das alles zu einem Image zusammen zu kopieren? Gibt es da mit GDI+ selbst direkt eine Möglichkeit? Wie würdet ihr das machen? Probier da schon etwas rum, aber irgendwie will das nicht so recht klappen (besonders der Layer dazwischen).
- Deluxe0321
- Beiträge: 336
- Registriert: 19.05.2006 00:31
- Kontaktdaten:
Code: Alles auswählen
;halber speudocode
;intialisiere GDI+ zeug
;lade bilder...
WImage.l=CreateImage(#PB_Any,Width.l,Height.l,32)
hdc = StartDrawing(ImageOutput(*in\window\WImage.l))
GdipCreateFromHDC( hdc, @*gfx )
Resultat.l = GdipDrawImage(*graphics, *image, x.f, y.f)
StopDrawing()
http://marv.sceneproject.org/stuff/player.zip
hoffe das meintest du
Gruß Marvin
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
was soll denn ein "leeres" bild sein?
erstmal brauchst du einen speicherbereich einer gewissen größe,
damit überhaupt ein bild vorhanden ist.
und wenn speicherbereich geleert wird, schreibt man ne #Null rein.
außerdem ist das die standardmäßige "transparente" Hintergrundfarbe.
also, leerer kann ein Bild nicht sein aufm Computer.
erstmal brauchst du einen speicherbereich einer gewissen größe,
damit überhaupt ein bild vorhanden ist.
und wenn speicherbereich geleert wird, schreibt man ne #Null rein.
außerdem ist das die standardmäßige "transparente" Hintergrundfarbe.
also, leerer kann ein Bild nicht sein aufm Computer.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Würde die Alphatransparenz richtig unterstützt, wäre ein leeres Bild ein leeres Bild und kein schwarzes Bild, also 100% transparent. Und ich rede sicherlich nicht von der Einfarbtransparenz.
Mit Alphakanal sähe ein leeres Bild so aus, dass jeder Pixel auf ARGB 0,0,0,0 gesetzt ist, also Schwarz mit 0 Deckkraft, weswegen Schwarz eigentlich ignoriert werden kann, könnte auch 0,255,255,255 sein und man hätte das gleiche Resultat.
Fände es eben etwas umständlich erst alles in ein pb image zusammen zu kopieren und dann wieder in ein gdi+ bitmap umzuwandeln, weil als solches brauch ich es dann um es später anzuzeigen.
Mit Alphakanal sähe ein leeres Bild so aus, dass jeder Pixel auf ARGB 0,0,0,0 gesetzt ist, also Schwarz mit 0 Deckkraft, weswegen Schwarz eigentlich ignoriert werden kann, könnte auch 0,255,255,255 sein und man hätte das gleiche Resultat.
Fände es eben etwas umständlich erst alles in ein pb image zusammen zu kopieren und dann wieder in ein gdi+ bitmap umzuwandeln, weil als solches brauch ich es dann um es später anzuzeigen.
- Deluxe0321
- Beiträge: 336
- Registriert: 19.05.2006 00:31
- Kontaktdaten:
@Hoto
Du hast doch das gesammte GDI+ zeugs runtergeladen oder?
wenn ja... schau dir mal die Hilfe dazu an..
Zudem.. mein beispiel welches ich noch im ersten post hinzugefügt hatte, zeigt deutlich das es egal ist ob das IMG mit pb erstellt wird oder nicht. die transparenz (im erweiterten bsp die ecken) ist trotzdem da..
nunja wurst, hier noch ein paar Empfehlungen:
gruß marvin
Edit:
noch ne möglichkeit ist einfach ein komplet transparentes PNG mit 1*1 pixel in dein Programm zu integrieren. Dieses kannst du dann beliebig verzerren und damit transparente bereiche auf von PB erstellen bildern bekommen.
Du hast doch das gesammte GDI+ zeugs runtergeladen oder?
wenn ja... schau dir mal die Hilfe dazu an..
Zudem.. mein beispiel welches ich noch im ersten post hinzugefügt hatte, zeigt deutlich das es egal ist ob das IMG mit pb erstellt wird oder nicht. die transparenz (im erweiterten bsp die ecken) ist trotzdem da..
nunja wurst, hier noch ein paar Empfehlungen:
hoffe das hilftGdiplus_StartDrawing() + Gdiplus_StopDrawing()
schau dir auch alle GdiplusCreate befehle an.. vll findest du dann was..
gruß marvin
Edit:
noch ne möglichkeit ist einfach ein komplet transparentes PNG mit 1*1 pixel in dein Programm zu integrieren. Dieses kannst du dann beliebig verzerren und damit transparente bereiche auf von PB erstellen bildern bekommen.