TImage umschalten
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
TImage umschalten
Hallo,
ich möchte 8 Zustände signalisieren und habe dafür 8 Bildchen entworfen.
Mit einem TImage sollen die dann je nach Zustand geladen werden.
Wie macht man dass am besten - mit LoadFromFile oder gibt es da eine bessere Lösung die Bildchen anzeigen zu lassen ?
Gruß Frank
ich möchte 8 Zustände signalisieren und habe dafür 8 Bildchen entworfen.
Mit einem TImage sollen die dann je nach Zustand geladen werden.
Wie macht man dass am besten - mit LoadFromFile oder gibt es da eine bessere Lösung die Bildchen anzeigen zu lassen ?
Gruß Frank
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: TImage umschalten
Du kannst eine TImageList verwenden und deine Bilder dort hineinladen. Sie müssen dafür alle gleich groß sein, aber das sollte ja kein Problem darstellen.
Dann kannst du zum Beispiel so auf ein beliebiges Canvas malen:
0, 0 geben die Koordinaten auf dem Canvas an wo das Zeichnen beginnt. 3 ist der Index des Bildes innerhalb der ImageList.
Dann kannst du zum Beispiel so auf ein beliebiges Canvas malen:
Code: Alles auswählen
ImageList1.Draw(Image1.Canvas, 0, 0, 3);
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: TImage umschalten
Danke - dass ist genau das richtige Lösung. 

-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
TImageImageList Laden
Hallo,
ich verwende 9 kleine Images von 21 x 15 Pixel Größe.
Nun möchte ich zwei Satz a 9 Images jeweils als Auswahl in die Imagelist laden.
Wie läd man Images in die Liste ?
ich verwende 9 kleine Images von 21 x 15 Pixel Größe.
Nun möchte ich zwei Satz a 9 Images jeweils als Auswahl in die Imagelist laden.
Wie läd man Images in die Liste ?
Re: TImage umschalten
Hast du die Add*-Methoden der ImageList schon probiert?
Wichtig: Vor dem Hinzufügen der Bilder Width und Height der ImageList auf 21 bzw. 15 setzen!
Code: Alles auswählen
type
TCustomImageList = class(...)
...
function Add(Image, Mask: TCustomBitmap): Integer;
function AddIcon(Image: TCustomIcon): Integer;
procedure AddImages(AValue: TCustomImageList);
function AddMasked(Image: TBitmap; MaskColor: TColor): Integer;
function AddLazarusResource(const ResourceName: string; MaskColor: TColor = clNone): integer;
function AddResourceName(Instance: THandle; const ResourceName: string; MaskColor: TColor = clNone): integer;
...
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: TImage umschalten
... sorry wenn ich wüste wie hätte ich nicht gefragt
Ich habe 9 PNGs
Green0.png ... Green8.png
Die liegen in einem Verzeichniss "Matrix"


Ich habe 9 PNGs
Green0.png ... Green8.png
Die liegen in einem Verzeichniss "Matrix"
Re: TImage umschalten
Seltsame Antwort: Ist es jetzt klar oder nicht? Ich hatte das als Frage formuliert, weil selbst, wenn du die Methoden kennen würdest, es noch den einen oder anderen Fallstrick gibt.DL3AD hat geschrieben:... sorry wenn ich wüste wie hätte ich nicht gefragt![]()
![]()
Ich habe 9 PNGs
Green0.png ... Green8.png
Die liegen in einem Verzeichniss "Matrix"
Nur zur Sicherheit, falls du noch nicht weitergekommen bist, hier ein getesteter Code-Schnipsel:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
pic: TPicture;
begin
pic := TPicture.Create;
pic.LoadFromFile('C:\lazarus-trunk_fpc302\images\components\default.png');
ImageList1.Add(pic.Bitmap, nil);
pic.Free;
end;
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: TImage umschalten
Hallo wp_xyz,
Danke für den Schnipsel - das hilft weiter.
Ich hatte mich in der Tat seltsam ausgedückt - Ich hatte die Methoden schon gefunden - wuste aber nicht wie ich die benutzen muss.
Bei Add z.B. TCustomBitmap habe ich nichts gefunden in verbindung mit PNG.
Habe seit 13:00 Uhr rumgesucht und nix passendes gefunden weder im Wiki , in der Hilfe oder bei Delphi.
So doof bin ich dann doch nicht.
Danke für den Schnipsel - das hilft weiter.
Ich hatte mich in der Tat seltsam ausgedückt - Ich hatte die Methoden schon gefunden - wuste aber nicht wie ich die benutzen muss.
Bei Add z.B. TCustomBitmap habe ich nichts gefunden in verbindung mit PNG.
Habe seit 13:00 Uhr rumgesucht und nix passendes gefunden weder im Wiki , in der Hilfe oder bei Delphi.
wp_xyz hat geschrieben:Und die Verallgemeinerung von meinem Dateiverzeichnis und meinem Bildnamen auf dein "Matrix" und "Green0.png" wird du doch hinkriegen, oder?

Re: TImage umschalten
Sorry. Aber ich konnte nicht anders, nach dieser Antwort. Nix für ungut...DL3AD hat geschrieben:So doof bin ich dann doch nicht.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: TImage umschalten
...kein Problem.
Dieses Forum ist eines der besten die ich kenne - man bekommt fast immer vernünftige Antworten und Hinweise.
Gruß
Frank
Dieses Forum ist eines der besten die ich kenne - man bekommt fast immer vernünftige Antworten und Hinweise.
Gruß
Frank
-
- Beiträge: 6916
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: TImage umschalten
Da bin ich voll deiner Meinung.Dieses Forum ist eines der besten die ich kenne - man bekommt fast immer vernünftige Antworten und Hinweise.

Zu deinem Thema zurück, dein Problem hätte man auch mit einer einfachen "Array of Bitmap" lösen können.
Der Vorteil dabei, die Bitmaps können unterschiedliche Grössen haben.
Aber wie man so was löst ist natürlich Geschmackssache.

Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: TImage umschalten
Hallo Mathias,
ich habe es so gelößt wie zuvor vorgeschlagen.
ABER da ich 9 PNG laden müsste lade ich nur eines.
ursprünglich benötigte ich 9 PNGs im Format 21x15 Pixel.
Ich habe mir ein PNG gebaut im Format 189x15 Pixel und lade nur dieses.
Die Imagelist habe ich dann auf 21x9 konfiguriert und lasse mir dann mit den Imageindex 0....8 die einzelnen Segmente welche dann den einzelnen PNGs entsprechen würden anzeigen.
So ist es auf einfachste Weise gelößt.
Gruß
Frank
ich habe es so gelößt wie zuvor vorgeschlagen.
ABER da ich 9 PNG laden müsste lade ich nur eines.
ursprünglich benötigte ich 9 PNGs im Format 21x15 Pixel.
Ich habe mir ein PNG gebaut im Format 189x15 Pixel und lade nur dieses.
Die Imagelist habe ich dann auf 21x9 konfiguriert und lasse mir dann mit den Imageindex 0....8 die einzelnen Segmente welche dann den einzelnen PNGs entsprechen würden anzeigen.
So ist es auf einfachste Weise gelößt.
Gruß
Frank
-
- Beiträge: 6916
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: TImage umschalten
Dies finde ich auch eine sehr gute Lösung, somit wird dein Programm-Verzeichnis recht übersichtlich.Ich habe mir ein PNG gebaut im Format 189x15 Pixel und lade nur dieses.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: TImage umschalten
Wenn du sie nicht im Programmablauf erst laden musst, kannst du auch einfach auf die ImageList doppelklicken.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de