AGB  ·  Datenschutz  ·  Impressum  







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

PNG auf Paintbox zeichnen

Ein Thema von xZise · begonnen am 1. Dez 2007 · letzter Beitrag vom 2. Dez 2007
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

PNG auf Paintbox zeichnen

  Alt 1. Dez 2007, 18:31
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  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 Paintbox zeichnen

  Alt 1. Dez 2007, 18:40
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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: PNG auf Paintbox zeichnen

  Alt 1. Dez 2007, 22:19
Cool Ich habe das jetzt in Benutzung!
Danke!

Aber ein kleines Problem tritt z.Zt. auf:
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]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

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

Re: PNG auf Paintbox zeichnen

  Alt 2. Dez 2007, 07:39
Angehängte Dateien
Dateityp: zip bigsmallpngflakes_289.zip (317,0 KB, 24x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: PNG auf Paintbox zeichnen

  Alt 2. Dez 2007, 18:26
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;
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  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 10:41 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