已知当前的系统剪切板中存有一个TBitMap格式的图象文件,请问如何将之保存为Jpg格式的图象文件到硬盘上?
请举例说明!

解决方案 »

  1.   


    加入uses clipbrd
    Delphi在Clipbrd库单元中定义了一个TClipboard类,并且预定义了一个变量Clipboard作为类TClipboard的实例,从而使用户在绝大多数场合不必自己去定义一个TClipboard的实例。
    表 7.2 TClipboard的属性AsText 保存剪贴板的文本,只有运行时才可设置FormatCount 可用剪贴板格式的数目Formats 可用剪贴板格式链━━━━━━━━━━━━━━━━━━━━━━━━━━━    表 7.3 TClipboard的方法━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━方 法 参 数 意 义─────────────────────────────────────Clear 无 清除剪贴板的内容Assign Source:TPersistent 把Source参数指定的对象拷贝到剪贴板,常用于图形、图像对象Open 无 打开剪贴板,阻止其它应用程序改变它的内容Close 无 关闭打开的剪贴板SetComponent Source:TPersistent 把部件拷贝到剪贴板GetComponent Owner 从剪贴板取回一个部件并放置Parent :TPersistentSetAsHandle Format:Word 把指定格式数据的句柄交给剪贴板返回类型:THandleGetAsHandle Format:Word 返回剪贴板指定格式数据的句柄返回类型:THandleHasFormat Format:Word 判断剪贴板是否拥有给定的格式返回类型:BooleanSetTextBuf Buffer:PChar 设置剪贴板的文本内容━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   剪贴板中可能的数据格式如下表。 表 7.4 剪贴板数据格式及其意义━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━数据格式 意 义──────────────────────────────CF_TEXT 文本。每行以CF_LF结束,nil标志文本结束CF_BITMAP Windows位图CF_METAFILE Windows元文件 CF_PICTURE TPicture类型的对象CF_OBJECT 任何TPersistent类型的对象━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 利用TClipboard实现文本的传输使用AsText属性和SetTextBuf方法。AsText属性为非控件部件的剪贴板操作提供了方便。如: Clipboard. AsText := Form1.Caption ; 把Form1的标题拷贝到剪贴板。 Label1.Caption := Clipboard.AsText; 把剪贴板中的文本写入Label1。SetTextBuf用于把超过255个字符的字符串拷入剪贴板。
      

  2.   

    以下是我的源代码,请看看错在哪儿?
    -----------------------------------------------------------------------------
    Uses Clipbrd,Jpeg;
    -----------------
    var Jpeg:TJpedImage;
    -----------------  
    if SavePictureDialog.Execute then
      Begin
        Jpeg:=TJpegImage.Create;
        Try
          ClipBoard.Clear;
          DbChart.CopyToClipboardBitmap;
          if Clipboard.HasFormat(CF_BITMAP) then
          Begin
           Jpeg.LoadFromClipboardFormat(CF_BITMAP,ClipBoard.GetAsHandle(CF_BITMAP),256);
           Jpeg.SaveToFile(SavePictureDialog.FileName);
          end;
        Finally
          Jpeg.Free;
        end;  end; 
    ------------------但是系统出错,好想是内存地址类的错误-----请问上面代码哪儿有错误?