首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求解惑 canvas画布下画好的图片如何保存

2013-02-04 
求解惑 canvas画布上画好的图片怎么保存~procedure TForm1.btn1Click(Sender: TObject)varMyCanvas1: TCo

求解惑 canvas画布上画好的图片怎么保存~
procedure TForm1.btn1Click(Sender: TObject);
var
  MyCanvas1: TControlCanvas;
  bitmap: TBitmap;
  MyCanvas2: TControlCanvas;
  files: string;
  XScale, YScale: Double; //x,y坐标比例
  Sero_x, Sero_y: Integer;
  s: TStringList;
  i: Integer;
  x, y, x1, y1: Integer;
  strTmp: string;
begin
  files := dlgOpen1.FileName;
  bitmap := TBitmap.Create;
  MyCanvas1 := TControlCanvas.Create;
  try
    bitmap.LoadFromFile(files);
    Mycanvas1.control := img1;
    MyCanvas1.StretchDraw(img1.clientRect, bitmap);
    XScale := (Abs((StrToInt(edt2.Text)) - (StrToInt(edt1.Text)))) / 100; //x比例
    YScale := (Abs((StrToInt(edt4.Text)) - (StrToInt(edt3.Text)))) / 100; //y比例
    Sero_x := Abs((StrToInt(edt2.Text)) - (StrToInt(edt1.Text)) - (StrToInt(edt1.Text)));
    Sero_y := Abs((StrToInt(edt4.Text)) - (StrToInt(edt3.Text)) - (StrToInt(edt3.Text)));
    lbl7.Caption := 'X比例:' + FloatToStr(XScale) + ' ' + 'Y比例:' + FloatToStr(YScale)
      + '  ' + 'X补偿:' + IntToStr(Sero_x) + ' ' + 'Y补偿:' + IntToStr(Sero_y);
    for i := 0 to lst1.Count - 1 do
    begin
      s := split(lst1.Items[i], ',');
      x := Trunc((StrToInt(s[0])) * XScale + Sero_x); //转换比例尺
      y := Trunc(Sero_y - (StrToInt(s[1])) * YScale);
      x1 := x + (StrToInt(edt5.Text) - 21);
      y1 := y + (StrToInt(edt6.Text) + 6);
      strTmp := s[0] + ',' + s[1];
      if chk1.Checked = False then
      begin
        MyCanvas1.Brush.Style := bsClear;
        MyCanvas1.Font.Color := clBlack; //字体颜色
        MyCanvas1.Font.Name := 'MS Sans Serif';
        MyCanvas1.Font.Style := [fsBold];
        MyCanvas1.Textout(x1, y1, strTmp);
        MyCanvas1.Brush.Style := bsClear;
      end else
      begin
        MyCanvas1.Font.Color := clBlack; //字体颜色
        MyCanvas1.Font.Name := 'MS Sans Serif';
        MyCanvas1.Textout(x1, y1, strTmp);
      end;
      //Sleep(800);
    end;
  finally
  //  img1 .Picture.SaveToFile(Extractfilepath(Application.ExeName)+'01.bmp');


    bitmap.Free;
    MyCanvas1.Free;
  end;
  windows.Beep(500, 200);
end;

图像画好了 请问怎么把画布上的图片保存下来啊 再下是新手 今天找了一天了都没找到办法 canvas
[解决办法]
有很多方法,比较直观的方法就是把 canvas 上的画面复制到一个 TImage 对象的 canvas 上(用 CopyRect 方法)。TImage 保存图像很容易(SaveToFile)。要想保存成 JPG 格式,还要把图像从 TImage 转移到一个 TJPegImage 对象(用 Assign 方法),然后再保存(也是 SaveToFile)。

[解决办法]


procedure SaveCanvas(Canvas:TCanvas;FileName:String);
var
  bmp:TBitmap;
begin
  bmp:=TBitmap.Create;
  try
    bmp.Canvas.Assign(Canvas);
    bmp.SaveToFile(FileName);
  finally
    bmp.Free;
  end;
end;

热点排行