ich habe ein problem, ich möchte ein windows paint nach schreiben(ansicht keine problem) nur ist er beim zeichnen eines größeren objekts einfach zu langsamm/träge...
ich weiß einfach nicht mehr weiter und hoffe das ihr euch den code anschauen könnt und mir helfen könnt:
Code: Alles auswählen
procedure TForm1.PaintBox1MouseDown(Sender: TOBject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
r1:trect;
begin
if (ssLeft in Shift) and (ssright in shift = false) then begin
mx:=x; my:=y;
// r1.left:=; r1.top:=0; r1.Right:=buffer3.Width; r1.Bottom:=buffer3.Height;
buffer3.Canvas.CopyRect(br,buffer.canvas,br);
SetValue(buffer.canvas);
end;
end;
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
r1:Trect;
begin
if ssLeft in Shift then begin
if t = true then begin
buffer.Canvas.CopyRect(br,buffer3.canvas,br);
t:=False;
end;
if Toolindex = 1 then begin
Buffer.Canvas.moveto(mx,my);
Buffer.Canvas.LineTo(x,y);
end;
// if mx < x then
r1.left:=mx;
// else
// r1.left:=mx+1;
// if my < y then
r1.top:=my;
// else
// r1.top:=my+1;
// if x > mx then
r1.right:=x;
// else
// r1.right:=x-1;
// if y > my then
r1.Bottom:=y;
// else
// r1.Bottom:=y-1;
if Toolindex = 2 then Buffer.Canvas.Rectangle(r1);
if Toolindex = 4 then Buffer.canvas.Ellipse(r1);
t:=true;
paintbox1.canvas.CopyRect(br,buffer.canvas,br);
if ti >= tc then begin
ti:=0;
br.left:=mx-1;
br.top:=my-1;
br.right:=x+1;
br.Bottom:=y+1;
paintbox1.canvas.CopyRect(br,buffer.canvas,br);
end
else begin
inc(ti);
end;
end;
end;
procedure TForm1.PaintBox1MouseUp(Sender: TOBject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mx:=-1; my:=-1; t:=false; clear:=False; BackupvaluetoBuffer;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
r1:TRect;
begin
r1.left:=0; r1.top:=0; r1.Right:=buffer.Width; r1.Bottom:=buffer.Height;
paintbox1.canvas.CopyRect(r1,buffer.canvas,r1);
end;
procedure TForm1.PaintBox1Resize(Sender: TObject);
begin
SetBufferSize(paintbox1.Width,paintbox1.Height)
end;
ich frage mich wie das die IDE von lazarus macht !
denn dort kann ich große objekte problemslos zeichnen !
selbst in meinem paint2 ist es recht träge !
weiß jemmand rat ?
VIELEN DANK FÜR EURE HILFE !