Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit RGB und Alphabild (https://www.delphipraxis.net/95908-problem-mit-rgb-und-alphabild.html)

Yheeky 15. Jul 2007 22:07


Problem mit RGB und Alphabild
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hi,

so, ich habe es nun hinbekommen eine vergrößerbare Form mit einem PNG zu erstellen.
Nun habe ich noch ein kleines Problem mit dem RGB und dem Alphabild. Der Rand wird in meiner Testform noch nicht 100%ig korrekt angezeigt.
Ich habe die Einzelbilder mal angehängt sowie eine Exe von der Testform.

Die Testform hat noch ein paar Fehler bei der Veränderung der Größe, aber darum werde ich mich kümmern, wenn das RGB & Alphaproblem gelöst ist ;-)

Hat jemand eine Idee, warum die Form den Rand nicht korrekt darstellt?

Yheeky 15. Jul 2007 22:08

Re: Problem mit RGB und Alphabild
 
Liste der Anhänge anzeigen (Anzahl: 1)
Und hier noch die Exe als Anhang (da nicht mehr als 4 in einem Posting gehen).

turboPASCAL 16. Jul 2007 06:08

Re: Problem mit RGB und Alphabild
 
Ich kann bei der Darstellung keinen Fehler erkennen. Auch das Ändern der Grösse klappt doch prima. :gruebel: (Oder Soll der Rand dunkel sein ?)

// Edit:

Aha, ja jetzt... den Fehler kenn ich, das liegt an dem laden der Bitmaps. Da ich deinen Quelltext nicht kenne kann ich dir so auf die schnelle nicht behilflich sein. Ich glaube da hat es bei den Image32-Dingern bei denen du den Alphachanel ausliest ein paar werte verdreht.

SirThornberry 16. Jul 2007 07:06

Re: Problem mit RGB und Alphabild
 
könntest du die bilder bitte als jpg anhängen damit auch unsere Modem-nutzenden User Freude beim anschauen haben? :-D

Yheeky 16. Jul 2007 12:08

Re: Problem mit RGB und Alphabild
 
Hi,

schonmal vorab. Bin im Moment leider nicht zuhause, also kann ich den Sourcecode erst später nachliefern. Ich kann aber schonmal erzählen, was ich gemacht habe.
Also ich habe die einzelnen Teile der Form (Titelleiste, Ränder, etc.) in 9 einzelne Bilder geladen und die mit den Bildern gefüllt. Habe jeweils die RGB und Alphabilder reingeladen. Ein Beispiel vom linken oberen Reck habe ich ja im ersten Posting angehängt. Das Alphabild ist doch aber korrekt so, oder?

Dann habe ich per Code die Bilder in ein großes TBitmap32 Bild geladen (mit DrawTo). Dann habe ich UpdateLayeredWindow aufgerufen und das Bild auf die Form gezeichnet, die das dann eben so aussehen lässt, wie es aussieht.

Welche Werte sollen sich denn da verdreht haben? Muss ich da auf was besonderes achten?

Zitat:

Zitat von SirThornberry
könntest du die bilder bitte als jpg anhängen damit auch unsere Modem-nutzenden User Freude beim anschauen haben? :-D

Ja, mach' ich, wenn ich zuhause bin...

Yheeky 16. Jul 2007 18:31

Re: Problem mit RGB und Alphabild
 
Okay, Bilder sind in JPEG geändert (zumindest die großen).

Hier der Code-Auszug:

Delphi-Quellcode:
[...]

private
    BlendF: TBlendFunction;
    P: TPoint;
    Size: TSize;

    FertigesBild : TBitmap32;

[...]

// Größe des Fensters festlegen
FertigesBild.SetSize(Form1.Width, Form1.Height);

// Titelleiste zeichnen
LinkeEckeOben.Bitmap.DrawTo(FertigesBild, 0, 0);

SetWindowLong(Handle, GWL_EXSTYLE,
GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED {or WS_EX_TRANSPARENT});
// WS_EX_TRANSPARENT macht das Fenster für Mausklicks transparent

BlendF.BlendOp := AC_SRC_OVER;
BlendF.BlendFlags := 0;
BlendF.SourceConstantAlpha := 255;
BlendF.AlphaFormat := AC_SRC_ALPHA;
P := Point(0, 0);
Size.cx := FertigesBild.Width;
Size.cy := FertigesBild.Height;

UpdateLayeredWindow(Handle, 0, nil, @Size, FertigesBild.Handle, @P, 0, @BlendF, ULW_ALPHA);
Die Erklärung wie ich die Bilder reinlade steht im Posting oben drüber. Weiss nun jemand woher der weisse Rand kommt und wie er schwarz wird (wie er eigentlich ist)?

Khabarakh 16. Jul 2007 18:44

Re: Problem mit RGB und Alphabild
 
Ich verstehe nicht, weshalb du RGB- und Alphakanal einzeln lädst, wenn du doch PNG benutzt :gruebel: .

Yheeky 16. Jul 2007 18:51

Re: Problem mit RGB und Alphabild
 
Oops, nee, da habe ich mich wohl schlecht ausgedrückt. Ich lade schon die beiden BMP Bilder rein, da TImage32 kein PNG liest.

Khabarakh 16. Jul 2007 19:30

Re: Problem mit RGB und Alphabild
 
Wenn es von Haus aus nicht unterstützt wird, muss man eben nachhelfen - werfe einmal einen Blick in die GR32-FAQ.

Yheeky 16. Jul 2007 22:33

Re: Problem mit RGB und Alphabild
 
Danke, dein Tipp hat mir die Lösung gebracht! Mit LoadPNGintoBitmap32 kann ich PNG Dateien direkt reinladen und dann wird alles korrekt angezeigt :-)

Danke schön!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 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