Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNGImageList (https://www.delphipraxis.net/172944-pngimagelist.html)

Spectre 29. Jan 2013 23:00

PNGImageList
 
Hallo!

Ich bin dabei ein geografie-lernprogramm zu programmieren. der meiste code steht eigentlich schon, ich bin nun dabei diesen zu optimieren.
Hab ne komponente welche den

pngspeedbutton
pngimagelist
pngimagecollection

umfasst..
mit der imagelist und der imagecollection komme ich nicht ganz klar. zummeinen verstehe ich den unterschied nicht..in der imagecollection kann ich verschiedene bilder reinladen via Items
(PngImagecollectionitems[0] etc)

meine frage ist wie ich diese aufrufe bzw anzeige? wenn ich mehrere bilder in die pngimagecollection geladen habe, wie rufe ich diese via einem button auf? also mal angenommen ich habe 2 bilder reingeladen, wie kann ich diese mit einem knopf aufrufen bzw anzeigen lassen?

ich verzweifel daran :S danke für die hilfe leute!!

robin

Popov 29. Jan 2013 23:15

AW: PNGImageList
 
Ich kenne die Komponente nicht, deshalb kann ich nichts dazu sagen, aber bei der TImageList sieht es in etwa so aus ImageList.GetBitmap(Nr, ZielBitmap). Evtl. sieht es so ähnlich aus. Teste es mal. Wenn nicht, Beitrag ignorieren.

Spectre 29. Jan 2013 23:20

AW: PNGImageList
 
"ImageList.GetBitmap(Nr, ZielBitmap)"
was meinst du mit zielbitmap?


mal angenommen ich lade 2 bilder rein, Nr wäre dann 0 und 1 nehme ich an, was definiert zielbitmap?

Popov 29. Jan 2013 23:28

AW: PNGImageList
 
Ich dachte die Bezeichnung ist ist Selbsterklärend. Nehmen wir an du hast zwei Bitmaps in die ImageList1 geladen. In dem Fall ist die erste Bitmap die Nr 0, die zweite die Nr 1, usw. Dann nehmen wir an, du willst es in die Bitmap der Image Komponente laden (Image.Picture.Bitmap). Das ganze würde dann so aussehen:

Delphi-Quellcode:
ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
Die erste Bitmap in der Liste (hier 0), wird am die Image Komponente Bitmap übergeben.

Zielbitmap ist also die Bitmap in die die Bitmap aus ImageList übergeben wird.

Spectre 29. Jan 2013 23:47

AW: PNGImageList
 
hmm...mit "ImageList1.GetBitmap" komme ich nicht weit...sieht aus als hätte die Png komponente eigene befehle :S
google hilft nicht wirklich weiter...ärgerlich. eigentlich möchte ich einfach nur via knopfdruck ein bild aus der imagecollection bzw den bilder die ich vorher reingeladen habe anzeigen :S

Uwe Raabe 30. Jan 2013 00:21

AW: PNGImageList
 
Also erstmal zum Unterschied:

Eine TPngImageList ist abgeleitet von einer normalen TImageList und erweiter diese um PNG-Support. Wie jede andere TImageList müssen alle Bilder darin gleich groß sein. Alle Controls, die mit einer TImageList zusammenarbeiten können (z.B. TToolbar), sollten dies auch mit einer TPngImageList tun.

Im Gegensatz dazu können die Bilder in einer TPngImageCollection unterschiedliche Größe haben. Allerdings muss man sich hier um die Darstellung der Bilder selber kümmern.

Hier ein kleines Beispiel, wie man das macht.

Auf ein Form platziere eine TPngImageCollection und fülle diese mit diversen Bildern (über den Editor oder per Code). Dann brauchen wir noch ein TImage und einen TButton auf dem Form. Beim TImage setzen wir das AutoSize auf true (damit es sich an die Bildgröße anpasst). Im ButtonClick-Event steht dann folgender Code:

Delphi-Quellcode:
begin
  Image1.Picture.Graphic := PngImageCollection1.Items[Tag].PngImage;
  Tag := Tag + 1;
  if Tag >= PngImageCollection1.Items.Count then
    Tag := 0;
end;
Mit jedem Button-Click wird nun das nächste Bild aus der Collection dargestellt.

Spectre 30. Jan 2013 00:27

AW: PNGImageList
 
danke für den tip!
habs grad so ausprobiert..allerdings sagt er mir beim compilieren beim TAG (dahin setzt er den cursor)

(Image1.Picture.Graphic := PngImageCollection1.Items[Tag].PngImage;) = Klasse besitzt keine Standarteigenschaft

:/

Popov 30. Jan 2013 00:31

AW: PNGImageList
 
Wie gesagt ich kenne die Komponente nicht, aber ich hab ein Beispiel gefunden wie eine Png eingefügt wird:

Delphi-Quellcode:
var
  png: TPngImageCollectionItem;
begin
  FPNGImageList := TPNGImageList.Create(Self);

  PNG := FPNGImageList.PngImages.Add;
  PNG.PngImage.LoadFromFile(GetIconDir + 'accept.png');
Daraus könnte man meinen, dass man in etwa so an die Image ran kommt

Delphi-Quellcode:
  PNG.PngImage[x];
  ..
Ist aber ins Blaue geschossen.

Andreas L. 30. Jan 2013 06:16

AW: PNGImageList
 
Zitat:

Zitat von Spectre (Beitrag 1201224)
hmm...mit "ImageList1.GetBitmap" komme ich nicht weit...sieht aus als hätte die Png komponente eigene befehle :S

Natürlich darfst du in deinem Code nicht ImageList1 schreiben wenn die PNG-Komponente auf deinem Formular den namen PngImageList1 hat :wink: Die Methode GetBitmap hat die PNG-Komponente nämlich...

Die PNGImageList ist übrigens (genau so wie der PNGButton) sehr buggy. Ich verwende deshalb immer die X²GraphicList (letzter Abschnitt des Artikels).

Uwe Raabe 30. Jan 2013 08:22

AW: PNGImageList
 
Zitat:

Zitat von Spectre (Beitrag 1201228)
..allerdings sagt er mir beim compilieren beim TAG (dahin setzt er den cursor)

(Image1.Picture.Graphic := PngImageCollection1.Items[Tag].PngImage;) = Klasse besitzt keine Standarteigenschaft

Welche Version der PngComponents setzt du denn ein und mit welcher Delphi-Version? Bei mir klappt das nachweisbar ohne Probleme.

Wenn deine Implementation noch kein Default für die Collection definiert, dann sollte es dieser Aufruf aber tun:

Delphi-Quellcode:
Image1.Picture.Graphic := PngImageCollection1.Items.Items[Tag].PngImage;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr.
Seite 1 von 4  1 23     Letzte »    

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