P
pyxyu
Unregistered / Unconfirmed
GUEST, unregistred user!
在image1绘图时在画布上添加元素多的情况下,占用内存多将导致死机.
还有怎么放大与缩小画布?
核心代码如下:
private
btmp:TBitMap;
picList:Tlist; //存放画布上的元素
selpic:TBasepic;//基础类
LinePic:TLinePic; //直线 是自己定义的一个类
CircPic:TCircPic; //圆
... //等
procedure TForm1.FormCreate(Sender: TObject);
begin
//创建对象
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//释放对象
end;
procedure TForm1..PicDrawEndEvent(Pic: TComponent); //添加图形元素
var
PicLine:TLinePic;
PicCirc:TCircPic;
begin
Case TPicBase(Pic).PicId of
PIC_LINE:
begin
PicLine:=TLinePic.Create;
PicLine.AssignPic(TLinePic(Pic));
PicLine.PicIndex:=PicList.Count;
PicList.Add(PicLine);
end;
PIC_CIRC:
begin
PicCirc:=TCircPic.Create;
PicCirc.AssignPic(TCircPic(Pic));
PicCirc.PicIndex:=PicList.Count;
//PicCirc.PicPen.Color := clBlack;
end;
GetImageCanvasBmp(False,True,[ssDouble],0);
end;
procedure Tfrm1_Main.GetImageCanvasBmp(DisChoose:Boolean; DrawToImage:Boolean; //刷新代码
Shift: TShiftState; State: Integer);
var
i1:Integer;
begin
OffSrc.Canvas.Brush.Color:=clBlack;
OffSrc.Canvas.FillRect(Rect(0,0,OffSrc.Width,OffSrc.Height));
For i1:=0 to PicList.Count-1 do begin
TPicBase(PicList.Items[i1]).DrawPic(OffSrc.Canvas);
end;
if DrawToImage then image1.Canvas.Draw(0,0,OffSrc);
Image1.Picture.Bitmap:=OffSrc;
end;
还有怎么放大与缩小画布?
核心代码如下:
private
btmp:TBitMap;
picList:Tlist; //存放画布上的元素
selpic:TBasepic;//基础类
LinePic:TLinePic; //直线 是自己定义的一个类
CircPic:TCircPic; //圆
... //等
procedure TForm1.FormCreate(Sender: TObject);
begin
//创建对象
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//释放对象
end;
procedure TForm1..PicDrawEndEvent(Pic: TComponent); //添加图形元素
var
PicLine:TLinePic;
PicCirc:TCircPic;
begin
Case TPicBase(Pic).PicId of
PIC_LINE:
begin
PicLine:=TLinePic.Create;
PicLine.AssignPic(TLinePic(Pic));
PicLine.PicIndex:=PicList.Count;
PicList.Add(PicLine);
end;
PIC_CIRC:
begin
PicCirc:=TCircPic.Create;
PicCirc.AssignPic(TCircPic(Pic));
PicCirc.PicIndex:=PicList.Count;
//PicCirc.PicPen.Color := clBlack;
end;
GetImageCanvasBmp(False,True,[ssDouble],0);
end;
procedure Tfrm1_Main.GetImageCanvasBmp(DisChoose:Boolean; DrawToImage:Boolean; //刷新代码
Shift: TShiftState; State: Integer);
var
i1:Integer;
begin
OffSrc.Canvas.Brush.Color:=clBlack;
OffSrc.Canvas.FillRect(Rect(0,0,OffSrc.Width,OffSrc.Height));
For i1:=0 to PicList.Count-1 do begin
TPicBase(PicList.Items[i1]).DrawPic(OffSrc.Canvas);
end;
if DrawToImage then image1.Canvas.Draw(0,0,OffSrc);
Image1.Picture.Bitmap:=OffSrc;
end;