Einzelnen Beitrag anzeigen

SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Verständnisfrage: TImage

  Alt 9. Sep 2012, 21:55
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?
  Mit Zitat antworten Zitat