Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Transparenz ist nicht gut genug (https://www.delphipraxis.net/57524-transparenz-ist-nicht-gut-genug.html)

torud 22. Nov 2005 18:05


Transparenz ist nicht gut genug
 
Hallo Wissende!

Ich habe ein Bild auf meinem Formular platziert und lege nun ein TImage darüber. In diesem TImage lade ich ein Bitmap, welches ich in 24 Bit-Qualität abgespeichert habe, weil ich es mit transparenz benötige. Es ist bei 100% geradeso akzeptabel, aber sobal ich die Grösse minimiere wird es grottenschlecht.

Was kann ich tun. Ich habe mir die Grafix32 gezogen und installiert, aber dort scheinen nur Bitmaps zu gehen und man muss noch einen Extra-Aplha-Channel angeben. Warum loben das alle über den Klee, wenn da nicht mal png zu laden geht?

Wie kann ich das mit den Transparenzen lösen???
Oder kann ich etwas anderes mit Bitmap32 probieren?
Gibt es etwas ähnliches wie TImage, wo ich Bilder hineinladen kann, die dann aber eine Transparenz haben?

Khabarakh 22. Nov 2005 19:55

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
In diesem TImage lade ich ein Bitmap, welches ich in 24 Bit-Qualität abgespeichert habe, weil ich es mit transparenz benötige.

24-Bit hat keinen Alpha-Kanal, du meinst wohl 32-Bit.
Zitat:

Was kann ich tun. Ich habe mir die Grafix32 gezogen und installiert, aber dort scheinen nur Bitmaps zu gehen und man muss noch einen Extra-Aplha-Channel angeben. Warum loben das alle über den Klee, [...]
Weil sie in die offizielle FAQ geschaut haben.

torud 23. Nov 2005 05:50

Re: Transparenz ist nicht gut genug
 
Nein eigentlich bin ich mir sicher, dass Photoshop mich danach fragt, ob ich das BMP als 24-Bit-Datei abspeichern will und dass mir selbst IrfanView diese Datei als 24-Bit-Datei ausgibt. Mir bekannt ist, dass TGA-Dateien einen Alpha besitzen, wenn man sie als 32-Bit-Dateien abspeichert.

Ich habe mal die neuere Version gezogen, da ich noch die 1.5.1 hatte und mir die FAQ angesehen. Meine Frage ist nun.

In welches Control laden die in dem Beispiel die PnG-Datei? In ein TImage oder in ein TImage32?

Ich habe nämlich gestern abend hier im Forum gelesen, dass TImage32 gar nicht dafür gemacht sein soll mit transparenz durchsichtig über anderen Control liegen zu können. Hat sich das geändert oder habe ich es mal wieder falsch verstanden?

MaBuSE 23. Nov 2005 06:00

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
Ich habe mal die neuere Version gezogen, da ich noch die 1.5.1 hatte und mir die FAQ angesehen. Meine Frage ist nun.
In welches Control laden die in dem Beispiel die PnG-Datei? In ein TImage oder in ein TImage32?

:gruebel: Hast Du den Beitrag oben gelesen?

Zitat:

Zitat von Khabarakh
Weil sie in die offizielle FAQ geschaut haben.

Ich weiß nicht wie gut Du Dich mit dem Internet auskennst, aber wenn so ein Wort unterstrichen ist, ist das ein Link. Wenn man auf einen Link klickt gelangt man zur gewünschten Information. (Sogar mit Quelltext Beispiel)

Hinter dem Link verbirgt sich folgender Text:
Is there a PNG library for GR32 which supports loading the image and its alpha channel at the same time?
...

torud 23. Nov 2005 06:26

Re: Transparenz ist nicht gut genug
 
Ja natürlich weiss ich, dass das ein Link war. Ich bin im gefolgtm und habe mir das dort durchgelesen. Du fragst dies sicher, wegen meiner Frage mit TImage und TImage32!? Dies bezieht sich im Primzip darauf, was ich schrieb in Bezug auf die Transparenzfähigkeit der TImage32.

Ich habe selbst den Code probiert, aber der Compiler meckert, weil er natürlich das

Delphi-Quellcode:
uses PNGImage;
nicht hat oder kennt.

MaBuSE 23. Nov 2005 06:42

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
Ja natürlich weiss ich, dass das ein Link war. Ich bin im gefolgtm und habe mir das dort durchgelesen. Du fragst dies sicher, wegen meiner Frage mit TImage und TImage32!? Dies bezieht sich im Primzip darauf, was ich schrieb in Bezug auf die Transparenzfähigkeit der TImage32.

Ich habe selbst den Code probiert, aber der Compiler meckert, weil er natürlich das

Delphi-Quellcode:
uses PNGImage;
nicht hat oder kennt.

Ich persönlich verwende auch: http://pngdelphi.sourceforge.net/

Das ist ein Filter, der auch das normale TImage von Delphi dazu bringt PNG anzuzeigen.
Da das auch in der FAQ erwähnt ist, gehe ich davon aus, das der Quellcode (Beispiel) pngdelphi verwendet.

Hier kannst Du auch nochmal nach PNG alternativen schauen: http://delphi.pjh2.de/articles/graphic/png.php

torud 23. Nov 2005 07:37

Re: Transparenz ist nicht gut genug
 
Also das hier wollte ich unbedingt lesen:

Zitat:

Das ist ein Filter, der auch das normale TImage von Delphi dazu bringt PNG anzuzeigen.
Da das auch in der FAQ erwähnt ist, gehe ich davon aus, das der Quellcode (Beispiel) pngdelphi verwendet.
Ich habe mir nun die PNG-Komponente gezogen, aber noch nicht die Möglichkeit gefunden, wie man nun mit der TImage, ein Png samt Alpha laden und anzeigen kann. Ich wühle mal noch etwas in der Hilfe zur Komponente, würde mich aber auch noch über einen kurzen Wink freuen.

MaBuSE 23. Nov 2005 07:45

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
Also das hier wollte ich unbedingt lesen:
Zitat:

Das ist ein Filter, der auch das normale TImage von Delphi dazu bringt PNG anzuzeigen.
Da das auch in der FAQ erwähnt ist, gehe ich davon aus, das der Quellcode (Beispiel) pngdelphi verwendet.
Ich habe mir nun die PNG-Komponente gezogen, aber noch nicht die Möglichkeit gefunden, wie man nun mit der TImage, ein Png samt Alpha laden und anzeigen kann. Ich wühle mal noch etwas in der Hilfe zur Komponente, würde mich aber auch noch über einen kurzen Wink freuen.

:-)
TPNGImage ist keine Komponente, sondern "nur" ein Filter.
Wenn Du das Package installiert, wird in initialization folgendes ausgeführt:
Delphi-Quellcode:
...
    TPicture.RegisterFileFormat('PNG', 'Portable Network Graphics', TPNGObject);
...
Lege einfach ein TImage auf ein leeres Form und klicke mal im Objektinspektor auf die Eigenschaft Picture. Im Dialog kannst du nun auch *.png Dateien auswählen und öffnen.
:D so einfach ist das.

Alle Komponenten, die TPicture verwenden sind nun PNG fähig.

In Deiner Unit wird in der uses dan automatisch pngimage hinzugefügt.

Schau Dir auch die Beispiel Programme auf der Homepage am.

[edit]nun sollte auch das Beispiel in der FAQ von der anderen Image Komponente funktionieren[/edit]

torud 23. Nov 2005 07:46

Re: Transparenz ist nicht gut genug
 
Also ich weiss nun nicht, ob das der richtige Weg ist, aber ich habe es testhalber mal so gemacht:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap: TBitmap;
  PNG: TPNGObject;
begin
  PNG := TPNGObject.Create;
  Bitmap := TBitmap.Create;
  {In case something goes wrong, free booth PNG and Bitmap}
  try
    PNG.LoadFromFile('c:\test.png');
    Bitmap.Assign(PNG);   //Convert data into bitmap
    Image1.Picture.Bitmap:=Bitmap;
    //Bitmap.SaveToFile(Dest);
  finally
    PNG.Free;
    Bitmap.Free;
  end
end;
Bitt um Protest, wenn das was schwerwiegendes Falsch ist. Die TImage habe ich auf transparent gestellt und hoffe nun, dass es in den folgenden Test zu besserer Qualität kommt.

torud 23. Nov 2005 07:49

Re: Transparenz ist nicht gut genug
 
Du warst schneller. Ich kann mir also den Umweg über das Assign sparen. Vielen Dank für Deine Infos und Deine Geduld!

MaBuSE 23. Nov 2005 07:49

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
Bitt um Protest, wenn das was schwerwiegendes Falsch ist. Die TImage habe ich auf transparent gestellt und hoffe nun, dass es in den folgenden Test zu besserer Qualität kommt.

Ich hätte das jetzt so gemacht:
Delphi-Quellcode:
...
  Image1.Picture.LoadFromFile('c:\temp\test.png');
...

torud 23. Nov 2005 07:52

Re: Transparenz ist nicht gut genug
 
Ich habe meinen Code soeben auf diese eine Zeile geschrumpft und es funzt ganz toll!

MaBuSE 23. Nov 2005 07:54

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
Ich habe meinen Code soeben auf diese eine Zeile geschrumpft und es funzt ganz toll!

Das freut mich. :thumb:
Viel Spaß noch

torud 23. Nov 2005 08:08

Re: Transparenz ist nicht gut genug
 
Sorry, noch eine in diesem Zusammenhang stehende Kleinigkeit. Was ist nun mit dem OpenPictureDialog. Den kann ich zwar von Hand um diese Extension erweitern, aber die Vorschau funzt dennoch nicht. Gibt es dafür auch einen Lösungsansatz???

MaBuSE 23. Nov 2005 08:30

Re: Transparenz ist nicht gut genug
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von torud
Sorry, noch eine in diesem Zusammenhang stehende Kleinigkeit. Was ist nun mit dem OpenPictureDialog. Den kann ich zwar von Hand um diese Extension erweitern, aber die Vorschau funzt dennoch nicht. Gibt es dafür auch einen Lösungsansatz???

Habe ich gerade mal eben getestet.
Wenn in Deiner Unit das uses um pngimage erweitert wurde, kann der OpenPictureDialog auch *.png

Den Filter musste ich nicht erweitern, das hat Delphi schon für mich getan. ;-)
(Einfach Filter eigenschaft doppelt klicken.)

siehe Screenshot

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtDlgs, StdCtrls, Buttons, ExtCtrls, pngimage;

type
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    OpenPictureDialog1: TOpenPictureDialog;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

end.

torud 23. Nov 2005 08:38

Re: Transparenz ist nicht gut genug
 
Asche auf mein Haupt!

Es war ein älteres Projekt, in dem ich einfach nur den OpenPicture-Dialog um den png-Eintrag erweitert habe, weil er schon da war. Ntürlich habe ich dabei völlig ausser Acht gelassen, dass ich pngimage in die Uses aufnehmen muss.

Danke für den Wecker, bin nun wach!

ps.: Toller Käfer! Selbst gebaut? Oder wo gefunden?

MaBuSE 23. Nov 2005 08:47

Re: Transparenz ist nicht gut genug
 
Zitat:

Zitat von torud
ps.: Toller Käfer! Selbst gebaut? Oder wo gefunden?

Gefunden, liegt unter LGPL Lizenz und darf somit auch vernünftig verwendet werden.

README.TXT zu den imScreenshot abgebildeten Bildern
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++
This copyright and license notice covers the images in this directory.
Note the license notice contains an add-on.
************************************************** **********************

TITLE: NUVOLA ICON THEME for KDE 3.x
AUTHOR: David Vignoni
SITE: http://www.icon-king.com
MAILING LIST: http://mail.icon-king.com/mailman/li..._icon-king.com

Copyright (c) 2003-2004 David Vignoni.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation,
version 2.1 of the License.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library (see the the license.txt file); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#######**** NOTE THIS ADD-ON ****#######
The GNU Lesser General Public License or LGPL is written for software libraries
in the first place. The LGPL has to be considered valid for this artwork
library too.
Nuvola icon theme for KDE 3.x is a special kind of software library, it is an
artwork library, it's elements can be used in a Graphical User Interface, or
GUI.
Source code, for this library means:
- raster png image* .
The LGPL in some sections obliges you to make the files carry
notices. With images this is in some cases impossible or hardly usefull.
With this library a notice is placed at a prominent place in the directory
containing the elements. You may follow this practice.
The exception in section 6 of the GNU Lesser General Public License covers
the use of elements of this art library in a GUI.
dave [at] icon-king.com

Date: 6 august 2004
Version: 1.0 rc1

DESCRIPTION:

NUVOLA is an SVG based icon theme.
This mean that all icons where designed with a vector graphics
application and SVG files are available.
Icons of the KDE version of Nuvola are PNG images (unscalable).
SVG files are available at www.icon-king.com from the day 15 may 2004.


LICENSE

Released under GNU Lesser General Public License (LGPL)
Look at the license.txt file.

CONTACT

David Vignoni
e-mail : dave [at] icon-king.com
ICQ : 117761009
http: http://www.icon-king.com


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