PNG w Delphi
Darkhog
Na wstępie chciałbym dodać, że jest to mój pierwszy artykuł, więc mogą być w nim błędy
Najpierw należy zainstalować archiwum pngdcus (są tam wszystkie niezbędne pliki):
pngdcus.zip
No więc ściągamy archiwum i rozpakowujemy do (katalog instalacji delphi)\lib (na przykład C:\program files\borland\delphi7\lib) Plik działa na wersjach od 6 do 2007. Żeby otworzyć taki plik wystarczy potem zwykły... TImage. Dostajemy też nowy obiekt - TPNGObject. Oczywiście, żeby zadziałało musimy podać
Jego obsługa wygląda następująco:
Metody:
constructor Create; //(to wiadomo)
destructor Destroy; //zaleca się użycie metody Free, której nie będziemy tu omawiali, bo należy do metod dziedziczonych
procedure Resize; (const cx,cy:Integer); //ta metoda służy jak sama nazwa skazuje do zmiany rozmiaru
procedure CreateAlpha; //Tworzy kanał Alpha. nie wiem jak działa, spisuję to wszystko z listy udostępnianej przez Code Completion
procedure RemoweTransparency; //nazwa sugeruje działanie odwrotne do CreateAlpha
procedure AddtEXt(const keyword,text:string); // dodaje tekst
procedure AddzTXt(const keyword,text:string); // podobne do poprzedniej. Szczerze mówiąc to nie wiem czym się różni.
procedure.RaiseError(ExceptionClass:ExceptClass, Text:String); //przyda się do obsługi wyjątków
Właściwości:
GammaTable: array[byte] of byte; //tablica Gamma?
TransparentColor: TColor //Kolor przezroczystości
ScanLine[Index:Integer]:Pointer; // nie wiem co te dwie
ExtraScanLine[Index:Integer]:Pointer; // właściwości robią
PixelInformation: TChunkpHYs;
Aha i to nie są wszystkie metody i własciwości. Kto jest chętny, niech zmodyfikuje artykuł. Po za tym większości metod i właściwości tego obiektu nie rozumiem, ale jak na poczatek starczy.
//...............................................................................................................................................................
Dopisna przez DeGeneRator 06.01.2009
No to jeszcze raz od początku ściągamy archiwum PNGImage z
http://gsaraiva.projects.pro.br/downloads/?id=pngdelphi
potem odpalamy delphi i w menu głównym zakładka Componets->Install Componet dalej w nowym oknie Unit File Name podajemy sciezke do pliku z rozszeżenie .pas i tak ze wszystkim plikami z tego archiwum następnie w innym oknie które się pojawi dajemi compile i wyłączamy Delphi.
Potem kopujemy pliki z tego archiwum do folderu np. C:\Program Files\Borland\Delphi6\Lib
i to wszystko. Przyokazji archium PNGImage warto wypakować w dowolnym miejscu ale jakimś sensownym.
No i taki przykład jak wyświetlić plik PNG
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, pngextra, PNGImage, StdCtrls, ExtCtrls, Menus;
type
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
OpenDialog1: TOpenDialog;
procedure Open1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Open1Click(Sender: TObject);
var PNG: TPNGObject;
BMP: TBitmap;
begin
Form1.OpenDialog1.Filter :='*.PNG';
Form1.OpenDialog1.FileName := '*.PNG';
if Form1.OpenDialog1.Execute then
Begin
PNG := TPNGObject.Create;
BMP := TBitmap.Create;
PNG.LoadFromFile(Form1.OpenDialog1.FileName);
BMP.Assign(PNG);
Form1.Image1.Picture.Bitmap := BMP;
BMP.Free;
PNG.Free;
End;
end;
end.
Przykład działa sprawdziłem w delphi 6 no i tyle
See then be good bye bye
//............................................................................................................................................
@Piotrekdp - Paczka którą podałeś jest bardzo dobra. Pliki PNG działają tak jak powinny- pełna przeźroczystość. Co najlepsze- nie trzeba nic kombinować w kodzie projektu. Poprostu korzystamy tylko z TImage i tam już mamy do wyboru dodatkowe rozszerzenie PNG. Polecam i dziękuję za paczuszkę.
Przeniosłem do FAQ.
ale to wszystko jest w dokumentacji dołaczonej do Bibloteki
http://www.trichview.com/resources/thirdparty/pngimage.zip
tyle co napisałeś to wiadomo po nagłówkach jeśli to ma być art
przydał by się przykład.
chęci dobre ale na art to to nie za bardzo się nadaje .
Żal.