• GdiPlus[51]: 图像(三) 关于呈现



    相关方法:
    IGPGraphics.DrawImage();
    IGPImage.GetThumbnailImage();
    IGPImage.RotateFlip();
    

    用 DrawImage 呈现图像时, 是否指定 Width 和 Height 的区别:



    //如果图像的分辨率与 Graphics 的分辨率不一致, 则指定 Width、Height 是有必要的.
    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Image: IGPImage;
      ix,iy,gx,gy: Single;
    begin
      Image := TGPImage.Create('C:\GdiPlusImg\Shapes.bmp');
      Graphics := TGPGraphics.Create(Handle);
    
      Graphics.DrawImage(Image, 10, 10, Image.Width, Image.Height);
      Graphics.DrawImage(Image, Image.Width + 20, 10);
    
      ix := Image.HorizontalResolution;
      iy := Image.VerticalResolution;
      gx := Graphics.DpiX;
      gy := Graphics.DpiY;
      Text := Format('%.0f:%.0f; %.0f:%.0f', [ix, iy, gx, gy]);
    end;
    

    略缩图:



    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Thumbnail,Image: IGPImage;
    begin
      Image := TGPImage.Create('C:\GdiPlusImg\Apple.gif');
      Thumbnail := Image.GetThumbnailImage(32, 32);
      
      Graphics := TGPGraphics.Create(Handle);
      Graphics.DrawImage(Image, 0, 0, Image.Width, Image.Height);
      Graphics.DrawImage(Thumbnail, Image.Width + 2, 0, Thumbnail.Width, Thumbnail.Height);
    end;
    

    图像旋转:



    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Image,ImageClone: IGPImage;
      i: Integer;
    begin
      Image := TGPImage.Create('C:\GdiPlusImg\Bird.bmp');
      Graphics := TGPGraphics.Create(Handle);
    
      for i := 0 to 7 do
      begin
        ImageClone := Image.Clone;
        ImageClone.RotateFlip(TGPRotateFlipType(i));
        Graphics.DrawImage(ImageClone, 10, 10, Image.Width, Image.Height);
        Graphics.TranslateTransform(Image.Width + 10, 0);
        if i = 3 then
        begin
          Graphics.TranslateTransform(-Graphics.Transform.OffsetX, Image.Height + 10);
        end;
      end;
    end;
    
  • 相关阅读:
    AcWing 900. 整数划分
    AcWing 913. 排队打水
    AcWing 897. 最长公共子序列
    AcWing 895. 最长上升子序列
    AcWing 902. 最短编辑距离
    AcWing 338. 计数问题
    AcWing 896. 最长上升子序列 II
    AcWing 779. 最长公共字符串后缀
    AcWing 282. 石子合并
    ASP.NET里常用的JS (转贴)
  • 原文地址:https://www.cnblogs.com/del/p/1634406.html
Copyright © 2020-2023  润新知