Hallo!
Irgendwie steh ich ein klein wenig an gerade. Ich habe bisher immer ein TImage erstellt und darin ein JPG oder PNG geladen um darauf zu zeichnen. Was muss ich machen, wenn ich ein Image erzeugen möchte ohne eines zu laden? Irgendwie will das nicht so richtig.
Danke
Fritz
TImage neu erstellen ohne ein Bild zu laden
Re: TImage neu erstellen ohne ein Bild zu laden
Du willst was zeichnen, oder?
Es gibt verschiedenen Möglichkeiten. Kommt drauf an, was du brauchst.
Die einfachste und oft die Beste: Male einfach im OnPaint Ereignis des Formulars bzw. einer Komponente wie TPaintbox.
Es gibt verschiedenen Möglichkeiten. Kommt drauf an, was du brauchst.
Die einfachste und oft die Beste: Male einfach im OnPaint Ereignis des Formulars bzw. einer Komponente wie TPaintbox.
Code: Alles auswählen
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Brush.Color:=clRed;
Canvas.FillRect(0,0,50,50);
end;
-
- Beiträge: 18
- Registriert: Di 6. Jan 2009, 08:32
- OS, Lazarus, FPC: Mac OSX 10.9 (L 1.0.14 FPC 2.6.2)
Re: TImage neu erstellen ohne ein Bild zu laden
Kann ich das dann auch abspeichern als JPG oder PNG?
Ich glaub ich muss nochmal einen Leseabend einlegen...
Ich glaub ich muss nochmal einen Leseabend einlegen...
Re: TImage neu erstellen ohne ein Bild zu laden
Wenn du ein PNG basteln willst, geht das z.B. so:
Es gibt noch andere Möglichkeiten. Es kommt drauf an, was du genau brauchst.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var png:TPortableNetworkGraphic;
begin
png:=TPortableNetworkGraphic.create;
png.SetSize(Width,Height); //Dimensionen sind hier vom Formular!
png.Canvas.Brush.Color:=clWhite;
png.Canvas.FillRect(0,0,Width,Height);
png.Canvas.Brush.Color:=clRed;
png.Canvas.FillRect(0,0,50,50);
png.SaveToFile('test.png');
png.free;
end;
-
- Beiträge: 323
- Registriert: Di 12. Apr 2011, 13:21
- OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
- CPU-Target: 1core 1,8GHz 32Bit
- Wohnort: Fürth
- Kontaktdaten:
Re: TImage neu erstellen ohne ein Bild zu laden
Hallo,
auf ein TBitmap kannst Du zeichnen. Bei anderen Graphikformaten ist das nicht selbstverständlich. Dann zeichnest Du eben auf ein TBitmap und weist das z.B. vor dem Speichern an ein anderes Format zu:
TImage ist ok. Das kapselt u.a. ein TBitmap. Aus dem Nichts erzeugst Du ein Bitmap in einem Image wie folgt:
Gruß
Heiner
auf ein TBitmap kannst Du zeichnen. Bei anderen Graphikformaten ist das nicht selbstverständlich. Dann zeichnest Du eben auf ein TBitmap und weist das z.B. vor dem Speichern an ein anderes Format zu:
Code: Alles auswählen
JPegImage.Assign(Bitmap);
Code: Alles auswählen
Image.Picture.Bitmap.Width := 100; // oder was Du willst
Image.Picture.Bitmap.Height := 100; // oder was Du willst
Heiner
-
- Beiträge: 18
- Registriert: Di 6. Jan 2009, 08:32
- OS, Lazarus, FPC: Mac OSX 10.9 (L 1.0.14 FPC 2.6.2)
Re: TImage neu erstellen ohne ein Bild zu laden
Vielen Dank erstmal!
Ich bin jetzt auf dem richtigen Weg, denke ich. Trotzdem werde ich mich nochmal durch das trockene Englisch quälen, damit ich es auch wirklich behirne.
Gruß
Fritz
Ich bin jetzt auf dem richtigen Weg, denke ich. Trotzdem werde ich mich nochmal durch das trockene Englisch quälen, damit ich es auch wirklich behirne.
Gruß
Fritz