Seite 1 von 1
GDI+: Bitmap in Bitmap zeichnen
Verfasst: 04.08.2008 22:58
von Hoto
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).
Verfasst: 05.08.2008 02:14
von Deluxe0321
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()
größeres bsp:
http://marv.sceneproject.org/stuff/player.zip
hoffe das meintest du
Gruß Marvin
Verfasst: 05.08.2008 02:25
von Hoto
Ne, da wird ja wieder in ein PB Image gezeichnet.
Das Problem bei CreateImage ist, dass man kein wirklich leeres Bild hat in das man zeichnet, denn es ist direkt ein schwarzes Bild.
Verfasst: 05.08.2008 03:02
von Kaeru Gaman
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.
Verfasst: 05.08.2008 03:33
von Hoto
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.
Verfasst: 05.08.2008 06:37
von Deluxe0321
@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:
Gdiplus_StartDrawing() + Gdiplus_StopDrawing()
schau dir auch alle GdiplusCreate befehle an.. vll findest du dann was..
hoffe das hilft
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.