zoukankan      html  css  js  c++  java
  • [delphi]向ImageList中加入png类型的资源图片

    向ImageList中动态加入Png图片有些失真,经过多方查询,发现需要将Bitmap的AlphaFormat指定一下。

    下面代码支持多层Png导入到ImageList。

    //向ImageList中加入png类型的资源图片
    procedure AddPngToImageList(AImageList: TImagelist; AResName: string);
    var
      LResStream: TStream;
      LPng: TPngImage;
      LBitMap, LRowBitMap: TBitmap;
      LRect, LRowRect: TRect;
    begin
      //AImageList.DrawingStyle := dsTransparent;
      AImageList.ColorDepth := cd32Bit;
      LResStream := TResourceStream.Create(uResourcesImpl.GetResHandle, AResName, RT_RCDATA);
      LPng := TPngImage.Create;
      LBitMap := TBitmap.Create;
      try
        LPng.LoadFromStream(LResStream);
        LBitMap.Assign(LPng);
        LBitMap.AlphaFormat := afIgnored;
        if LBitMap.Height > AImageList.Height then
        begin
          LRowBitMap := TBitmap.Create;
          try
            LRowBitMap.Width := LBitMap.Width;
            LRowBitMap.Height := AImageList.Height;
            LRect := Rect(0, 0, LBitMap.Width, LRowBitMap.Height);
            LRowRect := Rect(0, 0, LRowBitMap.Width, LRowBitMap.Height);
            while LRect.Bottom <= LBitMap.Height do
            begin
              LRowBitMap.Canvas.CopyRect(LRowRect, LBitMap.Canvas, LRect);
              OffsetRect(LRect, 0, LRowBitMap.Height);
              AImageList.Add(LRowBitMap, nil);
            end;
          finally
            LRowBitMap.Free;
          end;
        end
        else
          AImageList.Add(LBitMap, nil);
      finally
        LResStream.Free;
        LPng.Free;
        LBitMap.Free;
      end;
    end;
  • 相关阅读:
    MongoDB 聚合函数及排序
    MongoDB 关系运算符及统计个数及跳过分页
    MongoDB 正则表达式查询
    MongoDB 范围查询
    MongoDB 逻辑运算符
    MongoDB数据库
    python 判断文件夹存在,不存在创建文件夹
    MySQL 数据库操作
    MySQL 数据库连接命令
    PyCharm Django 显示一个简单页面
  • 原文地址:https://www.cnblogs.com/igaoshang/p/addPngToImageList.html
Copyright © 2011-2022 走看看