亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bspngimagelist.pas

?? 一套支持Delphi的VCL庫
?? PAS
字號:
{*******************************************************************}
{                                                                   }
{       Almediadev Visual Component Library                         }
{       BusinessSkinForm                                            }
{       Version 6.11                                                }
{                                                                   }
{       Copyright (c) 2000-2008 Almediadev                          }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{       Home:  http://www.almdev.com                                }
{       Support: support@almdev.com                                 }
{                                                                   }
{*******************************************************************}

unit bsPngImageList;

interface

uses
  Windows, Classes, SysUtils, Controls, Graphics, CommCtrl, ImgList, PngImage;

type
  TbsPNGImageList = class;

  TbsPngImageItem = class(TCollectionItem)
   private
    FPngImage: TPNGObject;
    FName: string;
    procedure SetPngImage(const Value: TPNGObject);
  protected
    procedure AssignTo(Dest: TPersistent); override;
    function GetDisplayName: string; override;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
  published
    property PngImage: TPNGObject read FPngImage write SetPngImage;
    property Name: string read FName write FName;
  end;

  TbsPngImageItems = class(TCollection)
  private
    function GetItem(Index: Integer): TbsPngImageItem;
    procedure SetItem(Index: Integer; Value:  TbsPngImageItem);
  protected
    function GetOwner: TPersistent; override;
  public
    FPngImageList: TbsPNGImageList;
    constructor Create(APNGImageList: TbsPNGImageList);
    property Items[Index: Integer]:  TbsPngImageItem read GetItem write SetItem; default;
  end;

  TbsPNGImageList = class(TCustomImageList)
  private
    FPngImages: TbsPngImageItems;
    function GetPngWidth: Integer;
    function GetPngHeight: Integer;
    procedure SetPngWidth(Value: Integer);
    procedure SetPngHeight(Value: Integer);
    procedure SetPngImages(Value: TbsPngImageItems);
  protected
    procedure DoDraw(Index: Integer; Canvas: TCanvas; X, Y: Integer; Style: Cardinal; Enabled: Boolean = True); override;
    procedure InsertBitMap(Index: Integer);
    procedure DeleteBitMap(Index: Integer);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property PngImages: TbsPngImageItems read FPngImages write SetPngImages;
    property PngWidth: Integer read GetPngWidth write SetPngWidth;
    property PngHeight: Integer read GetPngHeight write SetPngHeight;
  end;

  procedure Register;

implementation


  procedure Register;
  begin
    RegisterComponents('BusinessSkinForm VCL', [TbsPNGImageList]);
  end;

procedure TbsPngImageItem.AssignTo(Dest: TPersistent);
begin
  inherited AssignTo(Dest);
  if (Dest is TbsPngImageItem)
  then
    TbsPngImageItem(Dest).PngImage := PngImage;
end;

constructor TbsPngImageItem.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FPngImage := TPNGObject.Create;
  FName := Format('PngImage%d', [Index]);
  TbsPngImageItems(Self.Collection).FPngImageList.InsertBitmap(Index);
end;

destructor TbsPngImageItem.Destroy;
begin
  FPngImage.Free;
  if TbsPngImageItems(Self.Collection).FPngImageList.Count > Index
  then
    TbsPngImageItems(Self.Collection).FPngImageList.DeleteBitmap(Index);
  inherited Destroy;
end;

procedure TbsPngImageItem.Assign(Source: TPersistent);
begin
  if Source is TbsPngImageItem
  then
    begin
      PngImage.Assign(TbsPngImageItem(Source).PngImage);
      Name := TbsPngImageItem(Source).Name;
   end
  else
    inherited Assign(Source);
end;

function TbsPngImageItem.GetDisplayName: string;
begin
  if Length(FName) = 0
  then Result := inherited GetDisplayName
  else Result := FName;
end;

procedure TbsPngImageItem.SetPngImage(const Value: TPNGObject);
begin
  FPngImage.Assign(Value);
  Changed(False);
end;

constructor TbsPngImageItems.Create;
begin
  inherited Create(TbsPngImageItem);
  FPngImageList := APngImageList;
end;


function TbsPngImageItems.GetOwner: TPersistent;
begin
  Result := FPngImageList;
end;

function TbsPngImageItems.GetItem(Index: Integer): TbsPngImageItem;
begin
  Result := TbsPngImageItem(inherited GetItem(Index));
end;

procedure TbsPngImageItems.SetItem;
begin
  inherited SetItem(Index, Value);
end;

constructor TbsPNGImageList.Create(AOwner: TComponent);
begin
  inherited;
  FPngImages := TbsPngImageItems.Create(Self);
end;

destructor TbsPNGImageList.Destroy;
begin
  FPngImages.Free;
  FPngImages := nil;
  inherited;
end;

function TbsPNGImageList.GetPngWidth: Integer;
begin
  Result := Width;
end;

function TbsPNGImageList.GetPngHeight: Integer;
begin
  Result := Height;
end;

procedure TbsPNGImageList.SetPngWidth(Value: Integer);
begin
  if Width <> Value
  then
    begin
      Width := Value;
      if not (csLoading in ComponentState)
      then
        FPngImages.Clear;
    end;
end;

procedure TbsPNGImageList.SetPngHeight(Value: Integer);
begin
  if Height <> Value
  then
    begin
      Height := Value;
      if not (csLoading in ComponentState)
      then
      FPngImages.Clear;
    end;
end;


procedure TbsPNGImageList.SetPngImages(Value: TbsPngImageItems);
begin
  FPngImages.Assign(Value);
end;

procedure TbsPNGImageList.DoDraw(Index: Integer; Canvas: TCanvas; X, Y: Integer; Style: Cardinal; Enabled: Boolean);

procedure MakeImageBlended(Image: TPNGObject; Amount: Byte = 127);

  procedure ForceAlphachannel(BitTransparency: Boolean; TransparentColor: TColor);
  var
     Assigner: TBitmap;
     Temp: TPNGObject;
     X, Y: Integer;
     Line: pngimage.PByteArray;
     Current: TColor;
  begin
  Temp := TPNGObject.Create;
  try
    Assigner := TBitmap.Create;
    try
      Assigner.Width := Image.Width;
      Assigner.Height := Image.Height;
      Temp.Assign(Assigner);
    finally
      Assigner.Free;
     end;
    Temp.CreateAlpha;
    for Y := 0 to Image.Height - 1
    do begin
       Line := Temp.AlphaScanline[Y];
       for X := 0 to Image.Width - 1
       do begin
          Current := Image.Pixels[X, Y];
          Temp.Pixels[X, Y] := Current;
          if BitTransparency and (Current = TransparentColor)
          then Line^[X] := 0
          else Line^[X] := Amount;
          end;
       end;
    Image.Assign(Temp);
  finally
    Temp.Free;
   end;
  end;

var
   X, Y: Integer;
   Line: pngimage.PByteArray;
   Forced: Boolean;
   TransparentColor: TColor;
   BitTransparency: Boolean;
begin
  BitTransparency := Image.TransparencyMode = ptmBit;
  TransparentColor := Image.TransparentColor;
  if not (Image.Header.ColorType in [COLOR_RGBALPHA, COLOR_GRAYSCALEALPHA])
  then
    begin
      Forced := Image.Header.ColorType in [COLOR_GRAYSCALE, COLOR_PALETTE];
      if Forced
      then
        ForceAlphachannel(BitTransparency, TransparentColor)
      else
        Image.CreateAlpha;
    end
  else
   Forced := False;

  if not Forced and (Image.Header.ColorType in [COLOR_RGBALPHA, COLOR_GRAYSCALEALPHA])
  then
     for Y := 0 to Image.Height - 1 do
     begin
       Line := Image.AlphaScanline[Y];
       for X := 0 to Image.Width - 1 do
         if BitTransparency and (Image.Pixels[X, Y] = TransparentColor)
         then
           Line^[X] := 0
         else
           Line^[X] := Round(Line^[X] / 256 * (Amount + 1));
     end;
end;

procedure DrawPNG(Png: TPNGObject; Canvas: TCanvas; const Rect: TRect; AEnabled: Boolean);
var
  PngCopy: TPNGObject;
begin
  if not AEnabled
  then
   begin
     PngCopy := TPNGObject.Create;
     try
       PngCopy.Assign(Png);
       MakeImageBlended(PngCopy);
       PngCopy.Draw(Canvas, Rect);
     finally
       PngCopy.Free;
      end;
    end
  else
    Png.Draw(Canvas, Rect);
end;


var
  PaintRect: TRect;
  Png: TbsPngImageItem;
begin
  PaintRect := Rect(X, Y, X + Width, Y + Height);
  Png := TbsPngImageItem(FPngImages.Items[Index]);
  if Png <> nil
  then
    DrawPNG(Png.PngImage, Canvas, PaintRect, Enabled);
end;

procedure TbsPNGImageList.InsertBitMap(Index: Integer);
var
  B: TBitMap;
begin
  B := TBitMap.Create;
  B.Monochrome := True;
  B.Width := Width;
  B.height := Height;
  Insert(Index, B, nil);
  B.Free;
end;

procedure TbsPNGImageList.DeleteBitMap(Index: Integer);
begin
  Delete(Index);
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡一区二区在线| 国产日韩欧美a| www国产成人| 一区二区三区在线不卡| 国产一区二区在线视频| 色狠狠色狠狠综合| 久久久久久久综合狠狠综合| 亚洲国产一二三| 成人高清免费在线播放| 精品日韩欧美在线| 午夜电影一区二区| 91热门视频在线观看| 中文字幕欧美三区| 国产美女在线观看一区| 日韩欧美不卡一区| 亚洲电影一区二区| 色激情天天射综合网| 国产精品看片你懂得| 精品无人区卡一卡二卡三乱码免费卡| 欧美做爰猛烈大尺度电影无法无天| 国产亚洲综合在线| 国产一区二区三区日韩| 精品黑人一区二区三区久久 | 国产精品高潮呻吟| 国产成人亚洲综合a∨婷婷图片| 欧美日韩一区 二区 三区 久久精品| 国产精品美女一区二区| 国产又黄又大久久| 久久综合九色综合久久久精品综合| 秋霞av亚洲一区二区三| 欧美一区二区黄| 久久国产精品露脸对白| 欧美va日韩va| 精品在线你懂的| 久久精品亚洲乱码伦伦中文| 国产激情精品久久久第一区二区| 精品理论电影在线| 国产一区二区三区免费| 国产天堂亚洲国产碰碰| 国产精品538一区二区在线| 中文字幕 久热精品 视频在线| 成人激情免费视频| 一区二区久久久| 欧美精品第1页| 奇米精品一区二区三区四区| 精品国产一二三| 成人美女视频在线看| 亚洲免费av高清| 91精品国产综合久久精品麻豆| 免费国产亚洲视频| 国产欧美一区二区三区沐欲| 91丨九色porny丨蝌蚪| 亚洲成精国产精品女| 欧美电影免费观看高清完整版在线| 激情成人午夜视频| 日韩伦理免费电影| 欧美人妖巨大在线| 国产乱码精品1区2区3区| ...xxx性欧美| 欧美精品色综合| 欧美午夜理伦三级在线观看| 亚洲夂夂婷婷色拍ww47| 日韩欧美一区电影| 不卡av在线网| 日本欧美一区二区三区乱码| 国产亚洲欧美日韩俺去了| 91国偷自产一区二区开放时间| 青青草97国产精品免费观看| 国产精品不卡在线| 欧美成人一区二区三区| 色婷婷久久久久swag精品| 久久精品二区亚洲w码| 尤物在线观看一区| 2欧美一区二区三区在线观看视频| 97成人超碰视| 经典三级在线一区| 亚洲精品va在线观看| 国产亚洲精品aa午夜观看| 欧美三级中文字幕| av成人免费在线观看| 久久国产精品露脸对白| 亚洲成人在线网站| 中文字幕一区日韩精品欧美| 日韩精品一区国产麻豆| 色综合视频在线观看| 国产精品伊人色| 日本91福利区| 亚洲一区成人在线| 国产精品美女久久久久av爽李琼 | 99re热视频精品| 日本成人在线网站| 亚洲一区二区三区爽爽爽爽爽| 国产片一区二区三区| 久久影院午夜论| 精品少妇一区二区三区| 欧美一级免费观看| 欧美日韩国产系列| 91福利视频网站| 一本久道久久综合中文字幕| 成人国产精品免费观看| 岛国一区二区在线观看| 国产专区综合网| 九九久久精品视频| 久久精品国产**网站演员| 免费三级欧美电影| 男女男精品网站| 另类的小说在线视频另类成人小视频在线 | 九色|91porny| 国模冰冰炮一区二区| 麻豆精品一区二区| 麻豆精品在线播放| 黑人精品欧美一区二区蜜桃| 蜜桃久久久久久久| 精品亚洲成av人在线观看| 精品伊人久久久久7777人| 蜜臀av性久久久久av蜜臀妖精| 视频一区二区三区在线| 日韩精品国产欧美| 蜜桃一区二区三区在线观看| 麻豆成人综合网| 韩国欧美国产1区| 岛国精品在线观看| 91蝌蚪porny九色| 欧洲精品一区二区| 欧美一级二级三级乱码| 久久综合成人精品亚洲另类欧美 | 久久久777精品电影网影网| 久久久精品国产免大香伊| 国产日韩精品一区二区三区在线| 国产欧美日韩久久| 亚洲欧美日韩精品久久久久| 亚洲另类在线一区| 婷婷久久综合九色国产成人 | 精品综合久久久久久8888| 国产精品白丝jk白祙喷水网站| 成人午夜免费av| 在线观看亚洲专区| 欧美一级日韩免费不卡| 欧美国产亚洲另类动漫| 一区二区三区小说| 奇米色777欧美一区二区| 国产一区中文字幕| 在线亚洲高清视频| 日韩一级精品视频在线观看| 日本一区二区免费在线观看视频 | 亚洲男人的天堂在线aⅴ视频| 亚洲一二三四在线| 国内精品视频666| 在线视频国内自拍亚洲视频| 欧美一区二区三区在线观看| 国产日韩欧美综合一区| 亚洲成av人在线观看| 国产高清成人在线| 91国模大尺度私拍在线视频| 精品欧美一区二区在线观看| 亚洲桃色在线一区| 精品一区二区三区不卡 | 93久久精品日日躁夜夜躁欧美| 精品视频一区 二区 三区| 久久综合久久99| 午夜国产精品一区| 99久久精品费精品国产一区二区| 91麻豆精品国产无毒不卡在线观看| 一区二区在线看| 国产伦精品一区二区三区免费 | 加勒比av一区二区| 欧美视频日韩视频在线观看| 国产欧美日韩在线观看| 日本伊人午夜精品| 欧美日韩免费一区二区三区视频| 国产精品色呦呦| 国产一区二区免费视频| 欧美久久久久久久久中文字幕| 国产精品久久久一本精品 | 国产日韩欧美麻豆| 日韩中文字幕1| 色婷婷狠狠综合| 国产人久久人人人人爽| 奇米综合一区二区三区精品视频| 色呦呦网站一区| 国产精品久久久久一区二区三区共| 久久疯狂做爰流白浆xx| 欧美一级搡bbbb搡bbbb| 午夜av电影一区| 99riav久久精品riav| 国产精品久久毛片a| 国产91精品一区二区麻豆亚洲| 日韩色在线观看| 日本va欧美va精品| 欧美日韩综合色| 亚洲一区自拍偷拍| 日本精品裸体写真集在线观看| 中文字幕日韩av资源站| 成人视屏免费看| 一区二区中文视频| 在线免费观看日韩欧美| 一区二区三区中文在线观看| 99久久伊人网影院| 日韩码欧中文字| 欧美色国产精品|