TImage Canvas Bilder zeichnen
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
TImage Canvas Bilder zeichnen
Huhu,
Gibt es eine Möglichkeit auf ein TImage mit Canvas Bilder von zB einer Tilemap zu zeichnen?
MFG ProgrammingPony
Gibt es eine Möglichkeit auf ein TImage mit Canvas Bilder von zB einer Tilemap zu zeichnen?
MFG ProgrammingPony
Re: TImage Canvas Bilder zeichnen
Ja.
reicht wahrscheinlich schon.
Das hier schon durchgestöbert? http://wiki.freepascal.org/Developing_with_Graphics/de
Code: Alles auswählen
procedure TForm1.Image1Paint(Sender: TObject);
begin
Image1.Canvas.Draw(x,y,MyBmp);
....
Das hier schon durchgestöbert? http://wiki.freepascal.org/Developing_with_Graphics/de
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
Mir wäre eine Lösung ohne andere Librarys lieb , ansonsten welcher ist der einfachste weg?
Edit
Könntest du mir auch noch zeigen wie ich die Bilder dann rein lade oder ob ich eine Stelle des geladenen Bildes auf eine Stelle aufs Canvas zeichnen kann
Edit
Könntest du mir auch noch zeigen wie ich die Bilder dann rein lade oder ob ich eine Stelle des geladenen Bildes auf eine Stelle aufs Canvas zeichnen kann
Zuletzt geändert von programmingpony am Do 26. Mär 2015, 15:13, insgesamt 1-mal geändert.
Re: TImage Canvas Bilder zeichnen
Hatte oben noch editiert.programmingpony hat geschrieben:Mir wäre eine Lösung ohne andere Librarys lieb , ansonsten welcher ist der einfachste weg?
Der Link hat nicht primär mit anderen Libs zu tun.
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
Hab auch editiert 

Re: TImage Canvas Bilder zeichnen
Lies doch mal den Link. Dort steht wie man Bitmaps erstellt und von Datei lädt.programmingpony hat geschrieben:Hab auch editiert
X,Y bei obigem Beispiel ist die Zeichenposition.
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
An welcher Stelle soll es denn stehen?
Re: TImage Canvas Bilder zeichnen
http://wiki.freepascal.org/Developing_w ... nd_TBitmap
Code: Alles auswählen
var
b: TBitmap;
begin
b := TBitmap.Create;
try
b.LoadFromFile('test.bmp');
...
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
Könntest du mir einen kleinen sourcecode ggf kleines Projekt geben?
Ich suche schon seit heute morgen :/
Ich würde gerne in ein TImage ein Bild reinladen mit zB 10*10 Tiles mit je 32*32 px und auf dem anderen TImage an einigen Stellen einige der Tiles aus der anderen Bitmap anzeigen lassen... Ich bin mitlerweile nur noch müde und versteh nicht mehr viel , das wäre echt nett von dir
Ich suche schon seit heute morgen :/
Ich würde gerne in ein TImage ein Bild reinladen mit zB 10*10 Tiles mit je 32*32 px und auf dem anderen TImage an einigen Stellen einige der Tiles aus der anderen Bitmap anzeigen lassen... Ich bin mitlerweile nur noch müde und versteh nicht mehr viel , das wäre echt nett von dir

Re: TImage Canvas Bilder zeichnen
Das erinnert mich an so ein altes Strip-Spiel aus den Anfang 90ern
oder als Project anbei (@theo: sorry, ich kanns nicht lassen
)
@programmingpony: Unter Projekt -> Formulare kannst du das Formular öffnen (wird bei Lazarus 1.2.6 wahrscheinlich sonst nicht angezeigt)

Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
try
Image1.Picture.LoadFromFile('Image.png');
except
on e:exception do
ShowMessage('File [Image.png] not found');
end;
Image2.Canvas.Clear;
DoubleBuffered:=True;
end;
procedure TForm1.Image2Click(Sender: TObject);
var
mp: TPoint;
begin
mp:=Mouse.CursorPos;
mp:=Image2.ScreenToControl(mp);
mp.x:=(mp.x div 32) * 32;
mp.y:=(mp.y div 32) * 32;
Image2.Canvas.CopyRect(
Rect(mp.x, mp.y, mp.x + 32, mp.y +32),
Image1.Canvas,
Rect(mp.x, mp.y, mp.x + 32, mp.y +32));
end;

@programmingpony: Unter Projekt -> Formulare kannst du das Formular öffnen (wird bei Lazarus 1.2.6 wahrscheinlich sonst nicht angezeigt)
- Dateianhänge
-
TileMap.zip
- (395.61 KiB) 92-mal heruntergeladen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
Vielen Dank schonmal das ist echt Top 
Eine weitere Frage wäre:
Kann man die Felder auch skalieren
und wie kann ich objekte wie Rectangle rotieren?
Wenn das geklärt ist habe ich nen schönen Abend beim programmieren

Eine weitere Frage wäre:
Kann man die Felder auch skalieren
und wie kann ich objekte wie Rectangle rotieren?
Wenn das geklärt ist habe ich nen schönen Abend beim programmieren

Re: TImage Canvas Bilder zeichnen
probier es doch einfach aus, z.B.programmingpony hat geschrieben:Kann man die Felder auch skalieren
Code: Alles auswählen
Image2.Canvas.CopyRect(
Rect(mp.x, mp.y, mp.x + 16 + Random(33), mp.y + 16 + Random(33)),
// Rect(mp.x, mp.y, mp.x + 32, mp.y + 32),
Image1.Canvas,
// Rect(mp.x, mp.y, mp.x + 16 + Random(33), mp.y + 16 + Random(33)));
Rect(mp.x, mp.y, mp.x + 32, mp.y + 32));
Wahrscheinlich ist es erstmal zu viel, doch es gibt ein externes Package mit sehr vielen guten (besser sind die englischen) Tutorials, das gute grafische Lösungen bietet: http://wiki.lazarus.freepascal.org/BGRABitmap/de
Noch etwas komplexer wird die Verwendung von OpenGL.
Ein Canvas.Rectangle ist kein Objekt, sondern eine Methode (es zeichnet ein Rechteck auf ein Canvas). Die Antwort, ob man die Methode Canvas.Rectangle mit einem Rotationswinkel aufrufen kann, ist nein. Dafür könntest du die Methode Canvas.Polygon verwenden. Oder Linien, wie in diesem Bsp: http://www.lazarusforum.de/viewtopic.php?p=71443#p71443programmingpony hat geschrieben:und wie kann ich objekte wie Rectangle rotieren?
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
Ich meinte eigentlich zB ein Bildteil zu "zoomen" zB einen ausschnitt von 2*2 Feldern verkleinert auf 1*1 da zu stellen
Re: TImage Canvas Bilder zeichnen
Davon schrieb ich auch (einfach mal probieren):programmingpony hat geschrieben:Ich meinte eigentlich zB ein Bildteil zu "zoomen" zB einen ausschnitt von 2*2 Feldern verkleinert auf 1*1 da zu stellen
Code: Alles auswählen
Image2.Canvas.CopyRect(
Rect(mp.x, mp.y, mp.x + 32, mp.y + 32),
Image1.Canvas,
Rect(mp.x, mp.y, mp.x + 64, mp.y + 64));
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 18
- Registriert: Do 26. Mär 2015, 14:45
Re: TImage Canvas Bilder zeichnen
Danke funzt hatte es ein wenig überlesen / verlesen , du bist top 
