Frage zu TImagelist

Forum für alles rund um die MSEide und MSEgui
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Frage zu TImagelist

Beitrag von fliegermichl »

Wenn ich eine neue TImagelist erzeuge und dieser Bilder hinzufüge, dann ist il.count entsprechend und mit bitmaps[index] kann ich auf die einzelnen Bilder zugreifen.
Wenn die Imagelist aus dem Stream geladen wurde, dann ist count immer noch richtig, ich habe aber nur noch einen Eintrag bitmaps[0] in dem sozusagen alle Bilder als ein großes enthalten ist.

Wie kann ich jetzt wieder auf die Einzelbilder zugreifen?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu TImagelist

Beitrag von mse »

In TImageList werden die einzelnen Bilder in einer grossen möglichst quadratischen Pixmap gespeichert.
Die paint()-Funktionen kopieren dann den von der Indexnummer abgeleiteten Ausschnitt auf den Canvas. Eine TMaskedBitmap kann man mit GetImage() mit einem Einzelbildausschnitt laden, einen Einzelbildausschnitt überschreibt man mit SetImage().
TImageList.Bitmap ist die gesamt-Pixmap. Es ist möglich mehrere Versionen der Bilder vorzuhalten wenn VersionCount > 1 gesetzt wird. Die "AVersion" Parameter bestimmen das angesprochene Layer. Bitmaps[n] spricht die gesamt-Pixmap des entsprechenden Layers an ("Bitmaps[0]" = "Bitmap").
Zuletzt geändert von mse am Mi 13. Dez 2017, 09:51, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu TImagelist

Beitrag von fliegermichl »

Danke für die Info,

ich habe versucht die repazdemo zu compilieren. Da ist eine Variable vom typ imagebufferinfoty deklariert, die in msebitmap.pas auskommentiert ist. Wenn ich den Kommentar entferne, findet er loadfromimagebuffer nicht, was ebenfalls auskommentiert ist. Wodurch muss ich das ersetzen damit es compiliert bzw. funktioniert?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu TImagelist

Beitrag von mse »

RepazDemo kompiliert und funktioniert hier so weit ich sehe. Was funktioniert nicht? Einen Verweis auf imagebufferinfoty finde ich in RepazDemo nicht.

Edit: Du hast eine alte Version. Aktuelle Version ist hier:
https://gitlab.com/mseide-msegui/mseuniverse
Zuletzt geändert von mse am Mi 13. Dez 2017, 10:22, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu TImagelist

Beitrag von fliegermichl »

Ich hab das Problem gefunden. Man muss ja die addons in das Verzeichnis mseide-msegui/lib/addon kopieren. Da war noch eine ältere Version. Ich musste jetzt nur den typecast in universalprinter.pas Zeile 1494 wegmachen. Dann hat es fehlerfrei compiliert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu TImagelist

Beitrag von mse »

Günstiger ist die MSEuniverse addons zu verwenden. Habe repazdemo.prj entsprechend angepasst.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu TImagelist

Beitrag von fliegermichl »

Dazu muss ich diese doch nach lib/addon unterhalb von mseide-msegui und die entsprechende regcomponents.inc nach mseide/apps/ide kopieren oder gibt es eine Möglichkeit diese addons im mseuniverse Verzeichnis zu belassen (dort werden sie schliesslich von git aktualisiert).

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu TImagelist

Beitrag von mse »

Zur Kompilierung von RepazDemo die Angabe des Pfades in 'Project'-'Options'-'Directories', siehe die aktuelle repazdemo.prj.
Für MSEide muss der Pfad entsprechend angepasst werden. Es empfiehlt sich sich die Repaz-Daten im MSEgui lib/addon Verzeichnis zu löschen, damit es kein Durcheinander gibt.
Falls du ein eigenes regcomponents.inc hast, kann dort der Inhalt von Repaz regcomponent.inc angefügt werden.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu TImagelist

Beitrag von fliegermichl »

Ah jetzt hab ich's.
Ich hab mseide-msegui/lib/addon gelöscht und in den Projektoptionen d:/msegui/mseuniverse/addon/lib/addon/* hinzugefügt.
${MSEDIR}../mseuniverse/... hat nicht funktioniert. Der absolute Pfad geht.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu TImagelist

Beitrag von mse »

Ist ${MSEDIR} = d:/msegui/? dann ist der Pfad = ${MSEDIR}mseuniverse/addon/lib/addon/*

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu TImagelist

Beitrag von fliegermichl »

${MSEDIR} ist D:\msegui\mseide-msegui\
deshalb ja auch ${MSEDIR}..\mseuniverse\..

die beiden Verzeichnisse liegen nebeneinander in D:\msegui

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu TImagelist

Beitrag von mse »

Bitte kontrolliere 'Project'-'Options'-'Make'-'Show command line', vielleicht kommen wir dem Rätsel so auf die Spur.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu TImagelist

Beitrag von fliegermichl »

sorry mein Fehler. Das Verzeichnis unterhalb von mseuniverse heisst add-on. Ich hatte addon geschrieben. Den absoluten Pfad hatte ich mit dem Filedialog gewählt und da hat es natürlich gestimmt.

Antworten