Hallo,
ich habe mehre objekte auf meinem canvas gezeichnet das mache ich so:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:Integer;
begin
StatusBar1.Panels[0].Text:=IntToStr(ObjIndex) + '\' + IntToStr(TempObjIndex);
Bit.Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);;
for i:=0 to High(Obj) do begin
Bit.Canvas.Pen.Width:=obj[i].pw;
Bit.Canvas.Pen.Style:=obj[i].PenStyle;
Bit.Canvas.Brush.Style:=obj[i].BrushStyle;
Bit.Canvas.Pen.Color:=obj[i].FColor;
Bit.Canvas.Brush.Color:=obj[i].BColor;
if Obj[i].Visible = True then begin
if i = TempObjIndex then // das obj wurde makriert
DrawObjt(Obj[i].typ,obj[i].x,obj[i].y,obj[i].w+obj[i].x,obj[i].y+obj[i].h,True)
else //es ist nicht makriert
DrawObjt(Obj[i].typ,obj[i].x,obj[i].y,obj[i].w+obj[i].x,obj[i].y+obj[i].h,false)
end;
end;
PaintBox1.Canvas.Draw(0, 0, Bit);
Bit.Canvas.Pen.Color:=clBlack;
Bit.Canvas.Brush.Color:=clWhite;
Bit.Canvas.Pen.Width:=PW;
Bit.Canvas.Pen.Style:=psSolid;
Bit.Canvas.Brush.Style:=bsSolid;
end;
ich weiß es ist nicht die beste lösung, aber für den anfang solls reichen.
problem ist jetzt: wenn ich merhe objekte gezeichnet habe und die teielweise übereinander liegen verdecken sie sich ja. wie könnte ich das am besten machen, das z.b.das hinter objekte nach vorne geholt wird ???