TImage neu erstellen ohne ein Bild zu laden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
ddog
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)

TImage neu erstellen ohne ein Bild zu laden

Beitrag von ddog »

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

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: TImage neu erstellen ohne ein Bild zu laden

Beitrag von theo »

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.

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Brush.Color:=clRed;
  Canvas.FillRect(0,0,50,50);
end;  

ddog
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

Beitrag von ddog »

Kann ich das dann auch abspeichern als JPG oder PNG?

Ich glaub ich muss nochmal einen Leseabend einlegen...

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: TImage neu erstellen ohne ein Bild zu laden

Beitrag von theo »

Wenn du ein PNG basteln willst, geht das z.B. so:

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; 
Es gibt noch andere Möglichkeiten. Es kommt drauf an, was du genau brauchst.

Heinrich Wolf
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

Beitrag von Heinrich Wolf »

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:

Code: Alles auswählen

JPegImage.Assign(Bitmap);
 
TImage ist ok. Das kapselt u.a. ein TBitmap. Aus dem Nichts erzeugst Du ein Bitmap in einem Image wie folgt:

Code: Alles auswählen

Image.Picture.Bitmap.Width := 100; // oder was Du willst
Image.Picture.Bitmap.Height := 100; // oder was Du willst
Gruß
Heiner

ddog
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

Beitrag von ddog »

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

Antworten