Delphi Clipboard[3] HasFormat、Assign及Image图片的加载

{该文首发于博客园 滔Roy,无须授权即可转发,请自觉保留头部申明}

Delphi Clipboard[3] HasFormat、Assign及Image图片的加载

1、Assign //将给定对象分配到剪贴板

procedure TClipboard.Assign(Source: TPersistent);
begin
  if Source is TPicture then
    AssignPicture(TPicture(Source))
  else if Source is TGraphic then
    AssignGraphic(TGraphic(Source))
  else inherited Assign(Source);
end;

2、HasFormat  //如果剪贴板上有给定格式,则返回true

function TClipboard.HasFormat(Format: Word): Boolean;
  function HasAPicture: Boolean;
  var
    Format: Word;
  begin
    Open;
    try
      Result := False;
      Format := EnumClipboardFormats(0);
      while Format <> 0 do
        if TPicture.SupportsClipboardFormat(Format) then
        begin
          Result := True;
          Break;
        end
        else Format := EnumClipboardFormats(Format);
    finally
      Close;
    end;
  end;
begin
  Result := IsClipboardFormatAvailable(Format) or ((Format = CF_PICTURE) and
    HasAPicture);
end;

3、Image图片的加载示例

3.1 加载Image1上的图片到剪贴板

if Image1.Picture = nil then Exit;  //没有图片退出
 Clipboard.Assign(Image1.Picture);   //剪贴板加载image1上的图片

3.2 输出方式1(通过bitmap方式输出图片到Image2)

var
  bmp: TBitmap;
begin
  if Clipboard.HasFormat(CF_BITMAP) then begin 
    bmp:=TBitmap.Create;
    bmp.Assign(Clipboard);
    Image2.Picture.Assign(bmp);
    bmp.Free;
  end;
end;

3.3 输出方式2(直接输出图片到Image2)

if Clipboard.HasFormat(CF_BITMAP) then begin  //HasFormat如果剪贴板上有给定格式,则返回true。
    Image2.Picture.Assign(Clipboard);
end;

  

  

 

 

 

创建时间:2022.04.14  更新时间:

posted on 2022-04-14 14:47  滔Roy  阅读(391)  评论(0编辑  收藏  举报

导航