Hallo ich hab das problem das ich ein gleisbild erstellen möchte. unter visual-basic würde ich eine PictureBox-box benutzen, aber wie heißt so was unter lazarus??? Die funktionsweise sollte klar sein aber ich erklär sie noch einmal.
Ich brauche ein fester, bzw einen berreich indem ich bitmaps aneinanderreihen und stapeln kann, außerdem muss ich sie anklicken können und ich muss jedes einzellne bild bearbeiten können.
MfG Flashbanger
Gleisbild??? mit was???
-
- Beiträge: 94
- Registriert: Mi 28. Mär 2007, 22:01
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Gleisbild??? mit was???
Flashbanger hat geschrieben:Hallo ich hab das problem das ich ein gleisbild erstellen möchte. unter visual-basic würde ich eine PictureBox-box
Das nennt sich bei Lazarus TImage. Zu finden im Tab "Additional" der Komponentenleiste. Bedienung ähnlich einfach wie unter VB.
Viele Grüße, Euklid
Re: Gleisbild??? mit was???
Geht alles, aber dazu muss man erst programmieren lernen.Flashbanger hat geschrieben: Ich brauche ein fester, bzw einen berreich indem ich bitmaps aneinanderreihen und stapeln kann, außerdem muss ich sie anklicken können und ich muss jedes einzellne bild bearbeiten können.

-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ja dafür hast du verschiedene Möglichkeiten.
1. Du nutze die TImage von Lazarus.
Als Untergrund würde ich eine TScrollbox nehmen.
Jetzt erstellst du deine TImageListe und Setzte sie auf die gewünschte Position.
Nebenan der und Unternander ist gar nicht mal so schwer !
Wobei du müsstes auch noch wissen, wie viele sollen Nebenander gezeichnet werden ?
Zum Anklicken würde ich hier einfach das onClick Ereignis von TImage nutzen. einfach beim erstellen zuweisen und beim anklicken den Sender Auswerten bzw. erst zu einem TImage umwandeln und erst prüfen ob es ein TImage auch ist....
(ist zwar nicht erforderlich, aber schaden kann es auch nicht, oder ?).
2. Ich weiß jetzt nicht wie weit du bis in Object Pascal bzw. wie weit deine Kentnisse sind. Ich würde das evlt. Komplet alles in ein Panel selbst zeichnen.
also Scrolbox, Panel, ein Buffer(TBitMap) als Hintergrund.
In das Buffer zeichnest du jetzt deiner Bilder rein.
(Zu Emfehlen ist auch Theos OptBitmap... wegen den Vielen Grafik Foramten die unterstützt werden).
Beim Hinzufügen solltest du eine eigene kleine Klasse erstellen:
TItem = Class
Bild:TBitMap;
r:TRect;// Für die Collisiosn erkennung mit der Maus !
issel:Boolean;
end;
Nach dem das Hinzufügen und das Zeichnen geklappt hat, solltest du das onMouseDown Ereignisse von TPanel nutzen.
dort musst du alle Objekte in der Liste durchgehen und mit ptInRect prüfen ob ein Zusammenstoß mit der Maus passiert ist, wenn ja Markiere es...
und Fertig.... Der Aufwand ist nicht besonders groß *G*...
Ich hoffe das hat jetzt einer(du) Halbwegs verstanden.
1. Du nutze die TImage von Lazarus.
Als Untergrund würde ich eine TScrollbox nehmen.
Jetzt erstellst du deine TImageListe und Setzte sie auf die gewünschte Position.
Nebenan der und Unternander ist gar nicht mal so schwer !
Wobei du müsstes auch noch wissen, wie viele sollen Nebenander gezeichnet werden ?
Zum Anklicken würde ich hier einfach das onClick Ereignis von TImage nutzen. einfach beim erstellen zuweisen und beim anklicken den Sender Auswerten bzw. erst zu einem TImage umwandeln und erst prüfen ob es ein TImage auch ist....
(ist zwar nicht erforderlich, aber schaden kann es auch nicht, oder ?).
2. Ich weiß jetzt nicht wie weit du bis in Object Pascal bzw. wie weit deine Kentnisse sind. Ich würde das evlt. Komplet alles in ein Panel selbst zeichnen.
also Scrolbox, Panel, ein Buffer(TBitMap) als Hintergrund.
In das Buffer zeichnest du jetzt deiner Bilder rein.
(Zu Emfehlen ist auch Theos OptBitmap... wegen den Vielen Grafik Foramten die unterstützt werden).
Beim Hinzufügen solltest du eine eigene kleine Klasse erstellen:
TItem = Class
Bild:TBitMap;
r:TRect;// Für die Collisiosn erkennung mit der Maus !
issel:Boolean;
end;
Nach dem das Hinzufügen und das Zeichnen geklappt hat, solltest du das onMouseDown Ereignisse von TPanel nutzen.
dort musst du alle Objekte in der Liste durchgehen und mit ptInRect prüfen ob ein Zusammenstoß mit der Maus passiert ist, wenn ja Markiere es...
und Fertig.... Der Aufwand ist nicht besonders groß *G*...
Ich hoffe das hat jetzt einer(du) Halbwegs verstanden.
MFG
Michael Springwald
Michael Springwald