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

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

?? picclip.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
字號:
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1995, 1996 AO ROSNO             }
{         Copyright (c) 1997, 1998 Master-Bank          }
{                                                       }
{*******************************************************}

unit PicClip;

interface

{$I RX.INC}

uses Messages, Classes, Controls, Windows, RTLConsts, Graphics;

type

{ TPicClip }
  TCellRange = 1..MaxInt;

  TPicClip = class(TComponent)
  private
    FPicture: TPicture;
    FRows: TCellRange;
    FCols: TCellRange;
    FBitmap: TBitmap;
    FMasked: Boolean;
    FMaskColor: TColor;
    FOnChange: TNotifyEvent;
    procedure CheckIndex(Index: Integer);
    function GetCell(Col, Row: Cardinal): TBitmap;
    function GetGraphicCell(Index: Integer): TBitmap;
    function GetDefaultMaskColor: TColor;
    function GetIsEmpty: Boolean;
    function GetCount: Integer;
    function GetHeight: Integer;
    function GetWidth: Integer;
    function IsMaskStored: Boolean;
    procedure PictureChanged(Sender: TObject);
    procedure SetHeight(Value: Integer);
    procedure SetPicture(Value: TPicture);
    procedure SetWidth(Value: Integer);
    procedure SetMaskColor(Value: TColor);
  protected
    procedure AssignTo(Dest: TPersistent); override;
    procedure Changed; dynamic;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    function GetIndex(Col, Row: Cardinal): Integer;
    procedure Draw(Canvas: TCanvas; X, Y, Index: Integer);
    procedure DrawCenter(Canvas: TCanvas; Rect: TRect; Index: Integer);
    procedure LoadBitmapRes(Instance: THandle; ResID: PChar);
    property Cells[Col, Row: Cardinal]: TBitmap read GetCell;
    property GraphicCell[Index: Integer]: TBitmap read GetGraphicCell;
    property IsEmpty: Boolean read GetIsEmpty;
    property Count: Integer read GetCount;
  published
    property Cols: TCellRange read FCols write FCols default 1;
    property Height: Integer read GetHeight write SetHeight stored False;
    property Masked: Boolean read FMasked write FMasked default True;
    property Rows: TCellRange read FRows write FRows default 1;
    property Picture: TPicture read FPicture write SetPicture;
    property MaskColor: TColor read FMaskColor write SetMaskColor stored IsMaskStored;
    property Width: Integer read GetWidth write SetWidth stored False;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

implementation

{$B-}

uses SysUtils, VCLUtils, Consts, RXConst;

{ TPicClip }

constructor TPicClip.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FPicture := TPicture.Create;
  FPicture.OnChange := PictureChanged;
  FBitmap := TBitmap.Create;
  FRows := 1;
  FCols := 1;
  FMaskColor := GetDefaultMaskColor;
  FMasked := True;
end;

destructor TPicClip.Destroy;
begin
  FOnChange := nil;
  FPicture.OnChange := nil;
  FBitmap.Free;
  FPicture.Free;
  inherited Destroy;
end;

procedure TPicClip.Assign(Source: TPersistent);
begin
  if Source is TPicClip then begin
    with TPicClip(Source) do begin
      Self.FRows := Rows;
      Self.FCols := Cols;
      Self.FMasked := Masked;
      Self.FMaskColor := MaskColor;
      Self.FPicture.Assign(FPicture);
    end;
  end
  else if (Source is TPicture) or (Source is TGraphic) then
    FPicture.Assign(Source)
  else inherited Assign(Source);
end;

{$IFDEF WIN32}
type
  THack = class(TImageList);
{$ENDIF}

procedure TPicClip.AssignTo(Dest: TPersistent);
{$IFDEF WIN32}
var
  I: Integer;
  SaveChange: TNotifyEvent;
{$ENDIF}
begin
  if (Dest is TPicture) then Dest.Assign(FPicture)
  else if (Dest is TGraphic) and (FPicture.Graphic <> nil) and
    (FPicture.Graphic is TGraphic(Dest).ClassType) then
    Dest.Assign(FPicture.Graphic)
{$IFDEF WIN32}
  else if (Dest is TImageList) and not IsEmpty then begin
    with TImageList(Dest) do begin
      SaveChange := OnChange;
      try
        OnChange := nil;
        Clear;
        Width := Self.Width;
        Height := Self.Height;
        for I := 0 to Self.Count - 1 do begin
          if Self.Masked and (MaskColor <> clNone) then
            TImageList(Dest).AddMasked(GraphicCell[I], MaskColor)
          else TImageList(Dest).Add(GraphicCell[I], nil);
        end;
        Masked := Self.Masked;
      finally
        OnChange := SaveChange;
      end;
      THack(Dest).Change;
    end;
  end
{$ENDIF}
  else inherited AssignTo(Dest);
end;

procedure TPicClip.Changed;
begin
  if Assigned(FOnChange) then FOnChange(Self);
end;

function TPicClip.GetIsEmpty: Boolean;
begin
  Result := (Picture.Graphic = nil) or Picture.Graphic.Empty;
end;

function TPicClip.GetCount: Integer;
begin
  if IsEmpty then Result := 0
  else Result := Cols * Rows;
end;

procedure TPicClip.Draw(Canvas: TCanvas; X, Y, Index: Integer);
var
  Image: TGraphic;
begin
  if Index < 0 then Image := Picture.Graphic
  else Image := GraphicCell[Index];
  if (Image <> nil) and not Image.Empty then begin
    if FMasked and (FMaskColor <> clNone) and
      (Picture.Graphic is TBitmap) then
      DrawBitmapTransparent(Canvas, X, Y, TBitmap(Image), FMaskColor)
    else Canvas.Draw(X, Y, Image);
  end;
end;

procedure TPicClip.DrawCenter(Canvas: TCanvas; Rect: TRect; Index: Integer);
var
  X, Y: Integer;
begin
  X := (Rect.Left + Rect.Right - Width) div 2;
  Y := (Rect.Bottom + Rect.Top - Height) div 2;
  Draw(Canvas, X, Y, Index);
end;

procedure TPicClip.LoadBitmapRes(Instance: THandle; ResID: PChar);
var
  Bmp: TBitmap;
begin
  Bmp := MakeModuleBitmap(Instance, ResID);
  try
    Picture.Assign(Bmp);
  finally
    Bmp.Free;
  end;
end;

procedure TPicClip.CheckIndex(Index: Integer);
begin
  if (Index >= Cols * Rows) or (Index < 0) then
{$IFDEF RX_D3}
    raise EListError.CreateFmt(SListIndexError, [Index]);
{$ELSE}
    raise EListError.CreateFmt('%s (%d)', [LoadStr(SListIndexError), Index]);
{$ENDIF}
end;

function TPicClip.GetIndex(Col, Row: Cardinal): Integer;
begin
  Result := Col + (Row * Cols);
  if (Result >= Cols * Rows) or IsEmpty then Result := -1;
end;

function TPicClip.GetCell(Col, Row: Cardinal): TBitmap;
begin
  Result := GetGraphicCell(GetIndex(Col, Row));
end;

function TPicClip.GetGraphicCell(Index: Integer): TBitmap;
begin
  CheckIndex(Index);
  AssignBitmapCell(Picture.Graphic, FBitmap, Cols, Rows, Index);
{$IFDEF RX_D3}
  if Picture.Graphic is TBitmap then
    if FBitmap.PixelFormat <> pfDevice then
      FBitmap.PixelFormat := TBitmap(Picture.Graphic).PixelFormat;
  FBitmap.TransparentColor := FMaskColor or PaletteMask;
  FBitmap.Transparent := (FMaskColor <> clNone) and Masked;
{$ELSE}
  if Masked and (FMaskColor <> clNone) then
    with FBitmap do
      if not Empty then Canvas.Pixels[0, Height - 1] := FMaskColor;
{$ENDIF}
  Result := FBitmap;
end;

function TPicClip.GetDefaultMaskColor: TColor;
begin
  Result := clOlive;
  if (Picture.Graphic <> nil) and (Picture.Graphic is TBitmap) then
    Result := TBitmap(Picture.Graphic).TransparentColor and
      not PaletteMask;
end;

function TPicClip.GetHeight: Integer;
begin
  Result := Picture.Height div FRows;
end;

function TPicClip.GetWidth: Integer;
begin
  Result := Picture.Width div FCols;
end;

function TPicClip.IsMaskStored: Boolean;
begin
  Result := MaskColor <> GetDefaultMaskColor;
end;

procedure TPicClip.SetMaskColor(Value: TColor);
begin
  if Value <> FMaskColor then begin
    FMaskColor := Value;
    Changed;
  end;
end;

procedure TPicClip.PictureChanged(Sender: TObject);
begin
  FMaskColor := GetDefaultMaskColor;
  if not (csReading in ComponentState) then Changed;
end;

procedure TPicClip.SetHeight(Value: Integer);
begin
  if (Value > 0) and (Picture.Height div Value > 0) then
    Rows := Picture.Height div Value;
end;

procedure TPicClip.SetWidth(Value: Integer);
begin
  if (Value > 0) and (Picture.Width div Value > 0) then
    Cols := Picture.Width div Value;
end;

procedure TPicClip.SetPicture(Value: TPicture);
begin
  FPicture.Assign(Value);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷国产精品| 亚洲国产一区二区视频| 亚洲激情五月婷婷| 国内外成人在线| 欧美另类久久久品| 亚洲精品一二三区| 国产不卡在线播放| 精品黑人一区二区三区久久| 一区二区三区四区高清精品免费观看| 国产乱码一区二区三区| 51精品国自产在线| 亚洲高清免费一级二级三级| 成人激情免费电影网址| 久久久久久夜精品精品免费| 久久国产婷婷国产香蕉| 欧美日高清视频| 亚洲福利视频导航| 欧美中文字幕一区二区三区| 亚洲人成精品久久久久| 成人一区二区三区视频在线观看 | 婷婷六月综合网| 99久精品国产| 综合色中文字幕| av一二三不卡影片| 中文字幕一区二区三区不卡| 成人深夜在线观看| 国产精品天干天干在观线| 国产精品一区二区三区99| 精品人在线二区三区| 九九国产精品视频| 久久综合久久综合久久综合| 久久精品国产77777蜜臀| 日韩欧美一二三| 国产一区高清在线| 国产欧美日韩一区二区三区在线观看 | 日韩专区一卡二卡| 欧美午夜视频网站| 婷婷丁香激情综合| 日韩欧美国产一区二区三区| 紧缚捆绑精品一区二区| 国产亚洲欧美中文| 91在线丨porny丨国产| 亚洲免费av网站| 6080午夜不卡| 国产在线不卡视频| 国产精品久久看| 色综合久久88色综合天天| 亚洲一区二区三区免费视频| 欧美日韩国产在线观看| 麻豆91在线播放| 中文字幕电影一区| 在线欧美小视频| 日韩精品乱码免费| 国产欧美日本一区视频| 91碰在线视频| 免费观看91视频大全| 久久青草欧美一区二区三区| 91影院在线免费观看| 亚洲国产成人av网| 久久久精品中文字幕麻豆发布| 成人性视频免费网站| 亚洲成人一区二区在线观看| 欧美成人vr18sexvr| 99久久99久久久精品齐齐| 午夜电影网亚洲视频| 亚洲国产高清在线观看视频| 欧美日韩专区在线| 国产一区二区三区免费看| 亚洲免费大片在线观看| 久久天堂av综合合色蜜桃网| 在线看日本不卡| 国产酒店精品激情| 夜夜爽夜夜爽精品视频| 久久一日本道色综合| 欧美三区在线视频| 成人免费毛片高清视频| 日韩精品福利网| 亚洲视频一区二区在线| 欧美成人国产一区二区| 欧美伊人久久久久久久久影院| 精品一区二区精品| 亚洲成人免费视| 1024成人网| 久久亚洲精品国产精品紫薇| 欧美日韩精品欧美日韩精品| 成人av网站大全| 国产精一区二区三区| 日韩精品一二三| 亚洲综合久久av| 中文字幕一区二区5566日韩| 精品国产污污免费网站入口| 91精品在线观看入口| 91视频在线看| av影院午夜一区| 成人午夜视频福利| 国产一二精品视频| 韩国精品主播一区二区在线观看| 亚洲成人免费在线| 亚洲无人区一区| 亚洲男人的天堂网| 亚洲免费观看高清完整版在线观看熊 | 黄色日韩网站视频| 免费成人在线观看视频| 午夜成人在线视频| 亚洲午夜在线电影| 亚洲一区在线观看免费观看电影高清| 国产精品久久影院| 国产欧美综合在线观看第十页| 精品福利av导航| 久久久精品天堂| 国产欧美日韩久久| 国产偷v国产偷v亚洲高清| 久久久不卡网国产精品二区| 久久精品一区二区三区四区| 精品少妇一区二区三区免费观看 | 国产精品久久久久久久蜜臀 | 色视频欧美一区二区三区| 99久久99精品久久久久久| av一区二区三区| 91在线精品秘密一区二区| 97久久精品人人澡人人爽| 93久久精品日日躁夜夜躁欧美| 99国产精品久久久久| 一本色道久久综合狠狠躁的推荐| 色欧美片视频在线观看在线视频| 91国偷自产一区二区使用方法| 欧美写真视频网站| 91精品国产一区二区| 精品国产乱码91久久久久久网站| 久久久欧美精品sm网站| 国产精品成人免费在线| 一区二区激情小说| 免费成人av在线播放| 国产精品一区二区你懂的| 99久久国产综合色|国产精品| 色88888久久久久久影院野外 | 精品国产欧美一区二区| 中文字幕av在线一区二区三区| 亚洲精品伦理在线| 日韩高清一级片| 韩国精品久久久| 91丨九色porny丨蝌蚪| 欧美精品一级二级三级| 久久久久久麻豆| 亚洲一区二区成人在线观看| 奇米精品一区二区三区四区| 丁香一区二区三区| 欧美日韩高清在线| 国产欧美一区二区三区鸳鸯浴| 亚洲最大成人综合| 久久国产麻豆精品| 在线精品国精品国产尤物884a| 精品少妇一区二区三区视频免付费 | 免费国产亚洲视频| 成人在线综合网| 91精品免费在线| 国产精品国产三级国产aⅴ无密码| 午夜电影一区二区| 97久久精品人人做人人爽| 精品国产网站在线观看| 亚洲国产一区二区三区| 国产精品77777竹菊影视小说| 欧美日韩精品一区二区| 国产欧美精品一区二区色综合| 日韩av网站在线观看| 91免费精品国自产拍在线不卡| 日韩精品专区在线| 亚洲va国产天堂va久久en| 波多野结衣中文字幕一区二区三区 | 亚洲欧美偷拍另类a∨色屁股| 韩国视频一区二区| 91麻豆精品国产91久久久更新时间 | 91精品国产综合久久久久久| 国产精品久久久久aaaa| 久久成人免费电影| 在线成人av网站| 亚洲女同一区二区| 成人h精品动漫一区二区三区| 精品国产乱码久久久久久免费| 偷拍与自拍一区| 日本乱人伦一区| |精品福利一区二区三区| 国产.欧美.日韩| 26uuu亚洲综合色| 狠狠久久亚洲欧美| 精品少妇一区二区三区在线播放| 亚洲va韩国va欧美va| 欧美日韩一区视频| 亚洲成人av福利| 欧美日韩一二区| 日韩高清在线观看| 欧美一级电影网站| 美女诱惑一区二区| 欧美电影免费观看高清完整版在线 | 久久国产精品99久久久久久老狼| 6080国产精品一区二区| 日本免费新一区视频| 日韩亚洲国产中文字幕欧美| 丝袜美腿亚洲一区二区图片| 欧美一区二区成人6969|