Problem mit TJPEGImage bzw. zeichnen in einem Panel
-
Hallo,
ich hab da mal eine Frage zu TJPEGImage, bzw zum Zeichnen in einem Panel, habe folgenden Code. Kann mir entweder das Rechteck das gezeichnet wird in einem Panel anzeigen lassen, oder die Grafik als jpeg abspeichern. Möchte aber eigentlich beides... Der Unterschied an den beiden Varianten ist eigentlich nur die Sache mit dem Handle. Ohne das Handle zum Panel wird die Grafik nur gespeichert und mit dem Handle wird sie nur angezeigt...
void __fastcall TMainApplication::Panel1Click(TObject *Sender) { HDC hdc = GetDC(Panel1->Handle); TImage *bild = new TImage( this); bild->Picture->Bitmap->Width= Panel1->Width; bild->Picture->Bitmap->Height= Panel1->Height; bild->Picture->Bitmap->Canvas->Pen->Color = RGB(255,0,0); //bild->Picture->Bitmap->Canvas->Handle=hdc; bild->Picture->Bitmap->Canvas->Rectangle(10,10,Panel1->Width-10,Panel1->Height-10); TJPEGImage *jpg = new TJPEGImage(); jpg->Assign(bild->Picture->Bitmap); jpg->SaveToFile("test.jpg"); } //erzeugt jpg mit Rechteck aber keine Anzeige //ODER void __fastcall TMainApplication::Panel1Click(TObject *Sender) { HDC hdc = GetDC(Panel1->Handle); TImage *bild = new TImage( this); bild->Picture->Bitmap->Width= Panel1->Width; bild->Picture->Bitmap->Height= Panel1->Height; bild->Picture->Bitmap->Canvas->Pen->Color = RGB(255,0,0); bild->Picture->Bitmap->Canvas->Handle=hdc; bild->Picture->Bitmap->Canvas->Rectangle(10,10,Panel1->Width-10,Panel1->Height-10); TJPEGImage *jpg = new TJPEGImage(); jpg->Assign(bild->Picture->Bitmap); jpg->SaveToFile("test.jpg"); } //->erzeugt nur ein weißes Bild ohne das Rechteck!Grüße
Sascha
-
Würde es im oberen Code nicht reichen
bild->Parent = Panel1;einzufügen um das Bild anzuzeigen.
-
Okay, dank dir! Jetzt klappt es so wie ich's gern hätte!
