Seite 3 von 3

Verfasst: 04.07.2008 00:44
von Hoto
Das hättest aber ruhig in einem eigenen Thread fragen können... so geht mein Problem nur unter. Für das ich übrigens immer noch keine Lösung habe.

Verfasst: 04.07.2008 01:02
von Deluxe0321
@hoto
Habe mir das selbst heute auch nochmal angesehen. Die Structure
"BLENDFUNCTION" bietet noch einige Einstellungsmöglichkeiten.
Kannst du dir ja mal ansehen. MSDN dürfte weiterhelfen.

Das beste wäre jedoch wenn du im englischen Board nach Codes von
netmaestro suchst. Ich erinnere mich dort eine Procedure mit Beispielen
gesehen zu haben mit denen man die transparenten Farben ändern, bzw.
einiges einstellen (dazu zählt auch helligkeit und co.) konnte um das
IMG/Bitmap als PNG zu speichern.

Ich habe auch noch ein paar Probleme festgestellt. Wenn man z.b. einen
"Skin" mit auf diesem Wege erstellen will und einige Bereiche selbst
Zeichen muss, werden nur die geladenen Bilder, nicht die selbst
gezeichneten angezeigt, bzw. durchsichtig angezeigt.

Gruß Marvin

Verfasst: 04.07.2008 01:29
von Hoto
Problem hat sich inzwischen komplett erledigt... :roll: Typisch, dass ich Stunden lang nach einer Lösung suche und dann beim ignorieren und weiter programmieren auf die einfachste Lösung überhaupt komme...

Wieso lade ich die Bilder per GDI+ rein, schreibe sie dann in ein PB Image, nur um sie dann zum resizen und anzeigen wieder in ein GDI+ Bitmap umzuwandeln? Eben, Schwachsinn. Daher flog der PB Image Teil nun raus, nicht nur das der Code nun erheblich kleiner wurde, auch sämtliche Probleme sind verschwunden, denn den Befehl, der für den Ärger mit den zu dunklen Bildern sorgte, brauch ich nun nicht mehr. :lol:

Nächstes mal code ich direkt weiter, schreib das Problem direkt ins Forum und ignoriere das Problem dann erst mal bis das Programm selbst soweit steht und ich einen besseren Überblick habe. :(

Verfasst: 04.07.2008 14:19
von TomS
Kannst du die neue Version posten?
Warum hätte dein Problem untergehen sollen, eine einzige Antwort hätte genügt. Ich hab ja keine Diskussion oder so angefangen :roll:

Verfasst: 04.07.2008 14:47
von Hoto
Eine neue Funktion zum reinladen gibts nicht mehr, da das umstellen die komplette Procedure überflüssig machte. Das Ganze sieht jetzt einfach so aus:

Code: Alles auswählen

GdipCreateBitmapFromFile("bild1.png", @Image(1))
GdipCreateBitmapFromFile("bild2.png", @Image(2))
GdipCreateBitmapFromFile("bild3.png", @Image(3))

Procedure drawnew()  
  CreateImage(0,WindowWidth,WindowHeight,32)
  hdc = StartDrawing(ImageOutput(0))
  GdipCreateFromHDC( hdc, @*gfx )
  GdipDrawImage(*gfx, Image(1), 0, 0)
  GdipDrawImage(*gfx, Image(2), 100, 0)
  GdipDrawImage(*gfx, Image(3), 200, 0)
  
  sz.SIZE
  sz\cx = WindowWidth
  sz\cy = WindowHeight
  ContextOffset.POINT
  BlendMode.BLENDFUNCTION
  BlendMode\SourceConstantAlpha = 255
  BlendMode\AlphaFormat = 1
  UpdateLayeredWindow_(WindowID(0), 0, 0, @sz, hdc, @ContextOffset, 0, @BlendMode, 2)
  StopDrawing() 
EndProcedure
Der Code ist so allein natürlich nicht lauffähig, da fehlt ein GDI+ Wrapper samt GDI+ Initialisierung, dazu findet man aber schon genug in den PB Foren.

Sollte man eigentlich vor einem CreateImage prüfen ob das Bild bereits existiert oder überschreibt der Befehl sowieso dann komplett das bestehende Bild? Steht in der Hilfe leider nix drin.

Verfasst: 04.07.2008 21:53
von edel
Im besten Fall wird das Bild vorher freigegeben.

Verfasst: 06.07.2008 05:21
von Hoto
Da ja soweit alles geklärt ist komme ich noch mal auf die ursprüngliche Frage des Threads zurück:

Ist es möglich einen transparenten Windowed Screen zu machen oder ist dies unmöglich? Eventuell mit OpenGL möglich? Meine GDI+ Lösung geht zwar, stellt aber keine Geschwindigkeitsrekorde auf.

Verfasst: 06.07.2008 05:37
von Danilo
@Hoto: Suche mal hier im Forum (oder im engl.) nach "overlay", da findest
Du einige Beiträge mit Beispielen. Damit kann man quasi "Sprites" über
dem Desktop benutzen.

Verfasst: 06.07.2008 13:17
von Hoto
Das klingt doch mal gut, werd ich mir mal ansehen, damit sollte es ja dann kein Geschwindigkeitsproblem mehr geben. Wichtig ist halt nur, dass ich es am Ende genauso aussehen lassen kann wie es jetzt aktuell ist, also auch mit Alpha Transparenz.