Allerdings funktioniert das mit dem Zeichnen auf TImage.Picture.Bitmap.Canvas schon. Wichtig dabei ist aber ein vorheriges SetSize, um die Bitmap auch so groß zu machen, wie das Image.
Ja, das ist klasse. So mache ich da jetzt auch.
Derzeit bin ich aber an dem Problem daran, die Bitmap wieder zu leeren, um neue Informationen darauf darzustellen.
Im Forum fand ich den Hinweis, die Bitmap.width:=0 zu setzen; danach mache ich wieder setsize, aber das Bild von zuvor ist immernoch da
Irgendwie scheine ich nach links zu gucken und rechts zu pinseln...
Aktueller Stand:
Code:
procedure TForm2.FormShow(Sender: TObject);
var Can:TBitmap;
function FRect(x,y,x2,y2:word):TRect;
begin
result.Left:=x;
result.Right:=x2-x;
result.Top:=y;
result.Bottom:=y2-y;
end;
begin
// panel1 ist ein TImage;
with panel1 do begin
Top:=0;
Left:=0;
Width:=screen.DesktopWidth;
Height:=screen.DesktopHeight;
end;
Can:=panel1.Picture.Bitmap;
Can.SetSize(0,0); //Bild löschen geht so nicht
Can.Width:=0; Can.Height:=0; //Bild löschen geht so auch nicht
Can.SetSize(panel1.Width, panel1.Height);
Can.Canvas.Brush.Color:=clBlack;
Can.Canvas.FillRect(FRect(0,0,panel1.Width,panel1.Height));
end;
(aus einem bestimmten Grund nutze ich nicht panel1.align:=alClient !)
Und so male ich auf dem Bitmap:
Code:
procedure TForm2.FormClick(Sender: TObject);
var p:TPoint; can:TCanvas;
const size=10;
begin
Can:=Panel1.Picture.Bitmap.Canvas;
getCursorPos(p);
p:=ScreentoClient(p);
Can.Brush.Color := clRed;
Can.Pen.Color := clBlack;
with p do begin
r.Left:=x-size; r.Top:=y-size;
r.Bottom:=y+size; r.Right:=x+size;
Can.Ellipse( r.left, r.Top,r.Right,r.Bottom);
end;
end;
Was läuft falsch, wenn ich das dann nicht mehr aus dem BitMap weg bekomme?