AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PNG auf Layered Window zeichnen

Ein Thema von grasmann · begonnen am 18. Apr 2008 · letzter Beitrag vom 19. Apr 2008
Antwort Antwort
grasmann

Registriert seit: 11. Apr 2008
3 Beiträge
 
#1

PNG auf Layered Window zeichnen

  Alt 18. Apr 2008, 18:28
Hallo,

ich habe folgendes Problem:

Ich habe eine Form erstellt die Ich per UpdateLayeredWindow mit einem PNG ausgestattet hab. Jetzt will ich darauf aber noch ein PNG anzeigen lassen, welches natürlich auch richtig auf die Grundform geblendet wird. Leider weis ich nich wie ich das realisiere und hoffe dass mir dabei jemand helfen kann XD.

Ich hab das ganze mit einem TImage32 versucht. Das Bild wird auch angezeigt, allerdings blendet er nich richtig, sprich: Es steht ein hässlicher rosa Rand XD. Ist das mit nem Image32 überhaupt möglich?

So sieht der relevante Code aus:

Delphi-Quellcode:
Bit2 := TBitmap32.Create;
LoadPNGintoBitmap32(Bit2, ExtractFilePath(ParamStr(0)) + 'close_blend.png', Alpha);
bit2.Width := 86;
bit2.Height := 36;

img := timage32.Create(form1);
with img do
  begin
    Left := 112;
    Top := 6;
    Width := 86;
    Height := 36;
    Parent := form1;
    onclick := form1.PNGButton1Click;
    bitmap.Width := 86;
    bitmap.Height := 36;
    Bitmap.DrawMode := dmblend;
    Bitmap.CombineMode := cmblend;
  end;

bitblt(img.Bitmap.Handle,0,0,86,36,bit2.Handle,0,0,SRCCOPY );
Ich mach daran jetzt schon ewig rum XD ... aber ich kriegs einfach nich hin.

Ich hab das ganze auch schon versucht direkt auf die form zu zeichnen. Also so:

bitblt(form1.canvas.Handle,0,0,86,36,bit2.Handle,0,0,SRCCOPY ); Aber auch dann wird das Bild nicht richtig dargestellt, allerdings ist es dann nicht nur ein rosa Rand, sondern die gesamte Grundfläche des PNG´s ist schwarz (also die stellen die eigentlich transparent sein sollten).

Ich weis nich mehr weiter bitte helft mir XD.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: PNG auf Layered Window zeichnen

  Alt 18. Apr 2008, 18:35
Hi,

Auf die Schnelle...

Nicht bitBlt verwenden dondern die Draw- / DrawTo-Funktion der Unit Gr32
verwenden. Grund bitBlt kann kein Alphablend.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
grasmann

Registriert seit: 11. Apr 2008
3 Beiträge
 
#3

Re: PNG auf Layered Window zeichnen

  Alt 19. Apr 2008, 01:17
Danke für den Tipp. Habs jetzt mit Draw direkt auf das Bild gezeichnet bevor es quasi der Form attached wird:

Delphi-Quellcode:
form1.Label7.Caption := 'Close';
Bit2 := TBitmap32.Create;
LoadPNGintoBitmap32(Bit2, ExtractFilePath(ParamStr(0)) + 'close_blend.png', Alpha);
bit2.Width := 84;
bit2.Height := 58;

bit2.DrawMode := dmblend;
bit2.CombineMode := cmMerge;
Bit2.DrawTo(bit,114,-5);

bit2.free;
Und danach dann halt

UpdateLayeredWindow(Handle, 0, nil, @Size, Bit.Handle, @P, 0, @BlendF, ULW_ALPHA); Ich denk so is das jetzt die günstigste Lösung.

Der Code ist jetzt sogar kürzer als vorher ... ich dachte eher der würde noch länger werden.

Ich hab das Ergebnis ma angehängt ^^

EDIT: lol ... wenn ich bei google 'delphi png layered' ( ohne Anführungszeichen ) suche, krieg ich den Thread hier an erster Stelle XD ... trifft sich gut ... ich hab mich zu dem Thema dumm und dämlich gesucht ... dabei war die Lösung jetzt so einfach >_<"
Angehängte Dateien
Dateityp: rar fake_vista_211.rar (296,4 KB, 156x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#4

Re: PNG auf Layered Window zeichnen

  Alt 19. Apr 2008, 07:45
Boah, das sieht ja echt heiss aus... Wieviel Aufwand ist das?
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: PNG auf Layered Window zeichnen

  Alt 19. Apr 2008, 12:11
huhu...
Aus purer Neugier würde mich der Source auch sehr interessieren ^^
Sieht jedenfalls sehr schnieke aus...

Shalom
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: PNG auf Layered Window zeichnen

  Alt 19. Apr 2008, 14:10
Zitat von Meta777:
huhu...
Aus purer Neugier würde mich der Source auch sehr interessieren ^^
Sieht jedenfalls sehr schnieke aus...

Shalom

dem schließ ich mich auch mal an, währe echt top wenn du den source noch hochladen könntest..
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
grasmann

Registriert seit: 11. Apr 2008
3 Beiträge
 
#7

Re: PNG auf Layered Window zeichnen

  Alt 19. Apr 2008, 15:38
Die Anleitung für das "Form Picture" hab ich hierher
http://www.delphipraxis.net/internal...ct.php?t=90749

Ich benutz darin die Komponenten PNGImage, Graphics32 und PNGButton, die solltet ihr also unbedint installiert haben

PNGImage
Graphics 32
PNG Button

Ich hab das Ganze auch noch mit´n paar Kommentaren versehen ... hoffe ma dass es im Großen und Ganzen verständlich is
Angehängte Dateien
Dateityp: rar fake_vista_192.rar (338,7 KB, 127x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz