当前位置: 代码迷 >> Delphi >> Export、PaintTo、PaintIn的输出图片说明,该怎么处理
  详细解决方案

Export、PaintTo、PaintIn的输出图片说明,该怎么处理

热度:10000   发布时间:2013-02-25 00:00:00.0
Export、PaintTo、PaintIn的输出图片说明
如何从VG里面导出图片?VG提供了三个功能,而这三个功能如下:

Export 

把当前页面中的图形以图片的形式输出。

bool = Export( string, int )

第一个参数是要输出的文件名。

第二个参数是要输出的文件类型,目前有以下两种:

1-------------bmp位图格式

2-------------emf图元格式

返回值是True表示输出成功,否则失败,可能是文件名非法或者图片太大等原因。

vgmain.Export(filename,1);

PaintTo

把图形画到指定的设备(Device Context)上参数:标准Windows设备,整数型。按当前缩放比例画图。

void=PaintTo(int)

VG脚本示例:下面的代码把当前选中的图形画到屏幕上

extern int=GetDC(int) in User32.dll

extern void=ReleaseDC(int,int) in User32.dll

hdc=GetDC(Handle)

Selection.PaintTo(hdc)

ReleaseDC(Handle,hdc)

PaintIn

图形单元类、页面类、视图类的函数成员,把图形画到指定的设备(Device Context)上的一个矩形框中。第一个参数:标准Windows设备,整数型。后两个参数:矩形框的宽度和高度。

void=PaintIn(int,int,int)

VG脚本示例:下面的代码把当前页面的图形画到屏幕上32x32的区域

extern int=GetDC(int) in User32.dll

extern void=ReleaseDC(int,int) in User32.dll

hdc=GetDC(Handle)

ActiveSheet.PaintIn(hdc,32,32)

ReleaseDC(Handle,hdc)

Export 只是把VG画图上的当前图,以比例ZOOM=1来把VG图形输出到一个位图文件或EMF文件里面。PaintTo把VG的所有图形、或页面、或某图元等直接画出一个Windows的HDC设备(GDI Device Context)上。PaintIn把VG的所有图形、或页面、或某图元等直接画出一个Windows的HDC设备(GDI Device Context)上的一个矩形框里面。

例子说明(把DELPHI做的输出JPG做为例子说明):

在Delphi里的Form里加一个按钮和一个VG控件,代码如下控制:

procedure TForm1.Button1Click(Sender: TObject);

var

  bmp : TBitmap;

  jpg : TJPEGImage;

  i, x, y, w, h : Integer;

  p : TPoint;

begin

  bmp := TBitmap.Create;//首先创建一个BMP图像,准备把VG图形画到此BMP上

  jpg := TJPEGImage.Create; //首先创建一个JPG图像,准备把BMP转化为JPG格式

  vgctrl1.SelectAll;

  x := round( vgctrl1.ActiveSheet.Selection.Left );

  y := round( vgctrl1.ActiveSheet.Selection.Top );

  w := round( vgctrl1.ActiveSheet.Selection.Width );

  h := round( vgctrl1.ActiveSheet.Selection.Height );

  bmp.Width := w + 1;

  bmp.Height := h + 1; //得到BMP的大小,好让所有VG图形都能画到BMP上去

  bmp.Canvas.Lock;

  SetViewportOrgEx( bmp.Canvas.Handle, round( vgctrl1.RangeLeft ) - x, round( vgctrl1.RangeTop ) - y, @p ); //设置BMP画布的原点,

  for i := 0 to vgctrl1.ActiveSheet.Selection.UnitCount - 1 do

vgctrl1.ActiveSheet.Selection.Units[i].PaintTo( Integer( bmp.Canvas.Handle ) );

//利用PaintTo把VG的所有图形一个个地画到BMP的画布里。

  SetViewportOrgEx( bmp.Canvas.Handle, p.x, p.y, nil );

  bmp.Canvas.Unlock;

  jpg.Assign( bmp ); //绑定BMP到JPG里,使JPG可享BMP的数据,然后自己保存为文件,就是JPG格式的文件了。

  if SavePictureDialog1.Execute then//文件选择框,得到一个文件路径。

  jpg.SaveToFile( SavePictureDialog1.FileName );

  jpg.Free;

  bmp.Free;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

  vgctrl1.Design( '可调节的门.tbl' );

  vgctrl1.Zoom := 1;

end;

下载请点击:http://www.visual-graph.com/

------解决方案--------------------------------------------------------
你的题目太长了,估计没有人会有这个耐心的看完,我只能帮你顶了
  相关解决方案