Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PNG auf Paintbox zeichnen (https://www.delphipraxis.net/104327-png-auf-paintbox-zeichnen.html)

xZise 1. Dez 2007 18:31


PNG auf Paintbox zeichnen
 
Hallo DP,
ich habe eine Frage: Und zwar habe ich eine PNG Datei. Diese lade ich in ein TBitmap.
Und dieses Bitmap male ich später auf ein anderes, welches dann auf die Paintbox gezeichnet wird.
Zur Zeit sieht das bei mir so aus:
Code:
Hintergrundbild -----| 
                     |-----BB-->|---> Prim. Bufferbitmap -BB-> Paintbox
PNG --> Sek. Bufferbitmap -C.D.-|
Das PNG wird so in die Bufferbitmap geladen:
Delphi-Quellcode:
PNG := TPNGObject.Create;
PNG.LoadFromFile(<Datei>);

<Sek. Bufferbitmap>.Assign(PNG);
FreeAndNil(PNG);
Dabei steht oben BB für BitBlt und C.D. für Canvas.Draw.
Erstes unterstützt meiner Information nach keine Transparenz, Zweiteres hingegen schon.

MfG
xZise

turboPASCAL 1. Dez 2007 18:40

Re: PNG auf Paintbox zeichnen
 
Versuch es mal mit "PNG.Draw..." oder so. Die Kompon. hat eine eigene Zeichenroutiene.
Wenn du das PNG-Bitmap in ein Delphi-"TBitmap" lädst werden die Transparenzen (?), transparenten Teile
ggf. nicht über nommen.

Nutze einfacher Weise die GR32 unit mit ihren Bitmaps, diese unterstützen so etwas.

xZise 1. Dez 2007 22:19

Re: PNG auf Paintbox zeichnen
 
Cool :) Ich habe das jetzt in Benutzung!
Danke!

Aber ein kleines Problem tritt z.Zt. auf:
Delphi-Quellcode:
images[i].LoadFromResourceName(HInstance, names[i])
Da kann er einfach nicht die Ressource finden, wobei die existieren muss, weil es vorher ja auch ging. Nur mache ich atm nicht den Umweg über ein PNG-Objekt.
So sieht die .rc aus:
Code:
BigSnow RCDATA "snow_big.png"
SmallSnow RCDATA "snow_small.png"
NormalSnow RCDATA "snow_medium.png"
Delphi-Quellcode:
const
  NAMES : array [0..2] of string = ('BigSnow', 'NormalSnow', 'SmallSnow');
Ich vermute, dass der Typus nicht korrekt ist, aber hier wird überall, RCDATA gesagt...

MfG
xZise

[edit]Mist :( Irgendwas ist das schiefgegangen?
  1. Wenn ich das in ein RessourcenStream lesen will, findet er die Ressource schon wieder nicht.
  2. Wenn ich das Bild dann aus einer Datei (*.png) lade, funktioniert es nur bedingt:
    Ohne alles, sind transparente Teile schwarz.
    Wenn ich die GR32_PNG Unit benutze, sind diese dann weiß
[/edit]

turboPASCAL 2. Dez 2007 07:39

Re: PNG auf Paintbox zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
:coder2:

xZise 2. Dez 2007 18:26

Re: PNG auf Paintbox zeichnen
 
Hmm bei dir funktioniert es wunderbar, aber bei mir irgendwie nicht :(
Selbst wenn die Bufferbitmaps vom Typus "TBitmap32" sind, was sie ja nicht sein müsste, da da ja keine Transparenz ist :(

MfG
xZise

[edit]Oh man ^^ Ich habs:
So war es vorher:
Delphi-Quellcode:
procedure TSnow.DrawTo(const ABitmap : TBitmap32);
begin
  FBitmap.DrawTo(ABitmap.Canvas.Handle, FLeft, FTop);
end;
Und dannach, also dass es funzt:
Delphi-Quellcode:
procedure TSnow.DrawTo(const ABitmap : TBitmap32);
begin
  FBitmap.DrawTo(ABitmap, FLeft, FTop);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz