Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Graphics32 anno domini 2012 (https://www.delphipraxis.net/204060-graphics32-anno-domini-2012-a.html)

creehawk 20. Apr 2020 15:53

Graphics32 anno domini 2012
 
Moin Moin.

Ich muss in einer VCL Anwendung PNG Grafiken 128x128 Pixel verwenden. Diese Grafiken werden außerdem in 48x48 TImages gestretched. Was sch... aussieht.
Also habe ich gesucht und auf meinem eigenen Rechner graphics32 gefunden. Also aktuelle Version geholt und los geht's ...nicht. Die aktuelle Version (aktuell=2017) 1.9.1 kann nur unter aufwendigem Rumgefummel (soweit ich das beurteilen kann) unter Delphi 10.3.3 zum laufen (wenn überhaupt) gebracht werden. Dazu habe ich jetzt mal keine Lust. Aber so gar keine.

Gibt es im Jahre 2020 von Embarcadero für Delphi eine Stretchlösung die den heute allgemein üblichen grafischen Qualitätsansprüchen genügt oder bleibt es dabei das jeder Pixel per Hammer und Meissel aus dem LED Bildschirm gekloppt werden muss?

creehawk

mkinzler 20. Apr 2020 16:00

AW: Graphics32 anno domini 2012
 
Aktuelle Version
https://github.com/graphics32/graphics32

Bernhard Geyer 20. Apr 2020 17:04

AW: Graphics32 anno domini 2012
 
Oder nimm GDI(Plus)
https://www.delphipraxis.net/156268-...e-mit-gdi.html

Medium 20. Apr 2020 17:11

AW: Graphics32 anno domini 2012
 
Die SourceForge Seite dazu wird wohl seit längerem nicht mehr gepflegt, und das ist auch wo die 2012er Version das Neuste ist. Darüber bin ich auch schon mal gestolpert. Wäre gut, wenn das mal jemand löschen könnte der das kann/darf.

Bernhard Geyer 20. Apr 2020 17:14

AW: Graphics32 anno domini 2012
 
Zitat:

Zitat von Medium (Beitrag 1462525)
Die SourceForge Seite dazu wird wohl seit längerem nicht mehr gepflegt, und das ist auch wo die 2012er Version das Neuste ist. Darüber bin ich auch schon mal gestolpert. Wäre gut, wenn das mal jemand löschen könnte der das kann/darf.

Das will (soweit ich vor Jahren gelesen habe) SF nicht. Damit würde der Bedeutungsverlust von SF offensichtlicher werden.
Immerhin gibt es relativ prominent den Link auf das git-Repository

TurboMagic 20. Apr 2020 19:32

AW: Graphics32 anno domini 2012
 
Soweit mir bekannt ist, kann die VirtualImageList Lösung von Delphi
die zur HiDPI Unterstützung umgesetzt wurde besseres Stretching.

Jens01 20. Apr 2020 22:06

AW: Graphics32 anno domini 2012
 
http://angusj.com/delphi/image32/Docs/_Body.htm

creehawk 21. Apr 2020 05:55

AW: Graphics32 anno domini 2012
 
Moin Moin.

Es gibt also doch Hoffnung. Ich lege also zunächst mal Hammer und Meissel weg. GitHub aktuellest Version hatte ich am schon am Wickel, aber da muss man erst mal sehen ob das 10.3.3 auch frisst.

Und die letzte Post ist auch sehr interessant!

Ich bedanke mich umständlich!:thumb:

creehawk

Michael II 21. Apr 2020 07:02

AW: Graphics32 anno domini 2012
 
Ich nutze Graphics32Version = '2.0.0 alpha'; in Delphi 10.3.3 - leider weiss ich nicht mehr, was ich angepasst habe. Viel war's aber nicht.

Ich weiss, dass dir das nun nicht viel nützt, aber du weisst wenigstens, dass es funktioniert.

creehawk 21. Apr 2020 11:01

AW: Graphics32 anno domini 2012
 
Moin Moin.

So, jetzt habe ich das alles mal durchgenudelt. Image32 kann viel, macht aber bei PNG's mit Transparenz Fehler. Graphics32 ist eine Installations/Einbindungskatastrophe: wer nicht Delphi 47 Semester lang studiert hat kriegt das nicht gebacken. Und das ist auch entschieden zuviel Arbeit. Wobei ehrlich gesagt: ich kämpfe IT-mäßig eher mit Datenbanken rum als mit grafischen Problemen, so das mir etliche Termini der Grafikkünstler auch nicht geläufig sind.

Dann habe ich mir die von Embarcadero selbst stammende TImageCollection und TVirtualImageList gegriffen. Damit komme ich schon eher zurecht und vor allem ohne viel Aufstand und ohne Hammer und Meissel. Bis jetzt.

Also: Ich habe auf der Form eine TImagecollection gesetzt und 257 128er Png's eingelesen. Prima. Dann eine TVirtualImageList gesetzt und als Quelle für diese die TImageCollection angegeben. Prima. Dann die TVirtualImageList als Quelle in den SmallImages einer TListview angegeben. Prima. Läuft. Auch und gerade von der Qualität der Grafiken her. (128 > 48)

Jetzt das Problem: ich muss immer wieder andere Png's entsprechend einer Sortierung verwenden. WIE kann ich jetzt in die TVirtualImageList PROGRAMMATISCH einzelne Bilder aus der TImageCollection einlesen? Und bevor einer sagt "Wie in die TImagelist auch!" : prima, wie geht das da?

Hat jemand einen Dunst?

creehawk

Uwe Raabe 21. Apr 2020 11:54

AW: Graphics32 anno domini 2012
 
Zitat:

Zitat von creehawk (Beitrag 1462562)
WIE kann ich jetzt in die TVirtualImageList PROGRAMMATISCH einzelne Bilder aus der TImageCollection einlesen?

TVirtualImageList bietet ein paar Überladung für die Methode Add an. Im einfachsten Fall vergibst du dort den Namen für das Image in der ImageList und gibst den Namen des Images in der Collection an.

Delphi-Quellcode:
  VirtualImageList1.BeginUpdate;
  try
    VirtualImageList1.Clear;
    VirtualImageList1.Add('Image 1', 'address-book');
    VirtualImageList1.Add('Image 2', 'alert');
  finally
    VirtualImageList1.EndUpdate;
  end;

creehawk 21. Apr 2020 14:56

AW: Graphics32 anno domini 2012
 
Okay, hatte ich auch gesehen und folgendes gemacht:

Auf der Form ist eine TImageCollection und TVirtualImageList vorhanden, TImageCollection hat wie gesagt 257 128er Png's, TVirtualImageList ist leer und hat die TImageCollection als ImageCollection vermerkt. Der jeweilige Bildname kommt aus einer XML Datei und entspricht exakt dem Namen in der TImageCollection.
Delphi-Quellcode:
Var
I:Integer;
BILD:String;
 begin   
 For I := 0 to ShortListItemsNodes.length-1 do
  begin
   BILD := ShortListItemsNodes.Item[I].attributes[6].Text;
   VirtualImageList1.Add(BildName,BildName);
  end;
 end;
Nach dem Durchlauf ist in der VirtualImageList nichts drin wenn ich VirtuelImageList.count vertrauen darf. Setze ich VirtualImageList1.Add(BildName,I), also I als Index, holt er die Bilder zwar, aber natürlich nur in der Reihenfolge 0,1,2,3,..... was mir jetzt nicht wirkltich hilft.

Und jetzt der Witz: Setze ich manuell einzelne Bilder wie
Delphi-Quellcode:
      Main.VirtualImageList1.add('icon_cat_0','icon_cat_0');
      Main.VirtualImageList1.add('icon_eagle_0','icon_eagle_0');
      Main.VirtualImageList1.add('icon_fish_0','icon_fish_0');
werden diese anstandlos verarbeitet und angezeigt. Versteh ich jetzt überhaupt nicht.

creehawk

Uwe Raabe 21. Apr 2020 14:59

AW: Graphics32 anno domini 2012
 
BILD <> BildName

creehawk 21. Apr 2020 15:09

AW: Graphics32 anno domini 2012
 
Ja, klar, habe mich hier verschrieben. Soll heißen:

Delphi-Quellcode:
Var
I:Integer;
BildName:String;
begin   
For I := 0 to ShortListItemsNodes.length-1 do
 begin
  BildName := ShortListItemsNodes.Item[I].attributes[6].Text;
  VirtualImageList1.Add(BildName,BildName);
 end;
end;
Ergebnis : geht trotzdem nicht.

creehawk

Uwe Raabe 21. Apr 2020 15:15

AW: Graphics32 anno domini 2012
 
Und was sagt der Debugger steht in Bildname?

creehawk 21. Apr 2020 15:35

AW: Graphics32 anno domini 2012
 
Asche auf mein Haupt.

Ich habe den Fehler gefunden. In der XML steht der Name der Grafik ohne eine Zusatz (_0), in der ImageList natrülich mit. Da habe ich ständig drüber weg gelesen.

Ich bedanke mich sehr. Als funktioniert tadellos.

creehawk


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 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-2025 by Thomas Breitkreuz