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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? suipublic.pas

?? 一套還不錯的DELPHI皮膚控件!
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
////////////////////////////////////////////////////////////////////////////////
//
//
//  FileName    :   SUIPublic.pas
//  Creator     :   Shen Min
//  Date        :   2002-05-24
//  Comment     :
//
//  Copyright (c) 2002-2003 Sunisoft
//  http://www.sunisoft.com
//  Email: support@sunisoft.com
//
////////////////////////////////////////////////////////////////////////////////

unit SUIPublic;

interface

{$I SUIPack.inc}

uses Windows, Graphics, Controls, Messages, Classes, Forms, SysUtils,
     TypInfo, Math,
     SUIThemes, SUIMgr;

const
    SUI_ENTER = #13 + #10;
    SUI_2ENTER = SUI_ENTER + SUI_ENTER;


    procedure DoTrans(Canvas : TCanvas; Control : TWinControl);
    procedure TileDraw(const Canvas : TCanvas; const Picture : TPicture; const Rect : TRect);
    procedure SetWinControlTransparent(Control : TWinControl);
    procedure SpitBitmap(Source, Dest : TBitmap; Count, Index : Integer);
    procedure SpitDraw(Source : TBitmap; ACanvas : TCanvas; ARect : TRect; ATransparent : Boolean);
    procedure SpitDrawHorizontal(Source : TBitmap; ACanvas : TCanvas; ARect : TRect; ATransparent : Boolean);
    procedure DrawControlBorder(WinControl : TWinControl; BorderColor, Color : TColor; DrawColor : Boolean = true);
    procedure RoundPicture(SrcBuf : TBitmap);
    procedure RoundPicture2(SrcBuf : TBitmap);
    procedure RoundPicture3(SrcBuf : TBitmap);

    procedure SetBitmapWindow(HandleOfWnd : HWND; const Bitmap : TBitmap; TransColor : TColor);

    function InRect(Point : TPoint; Rect : TRect) : Boolean; overload;
    function InRect(X, Y : Integer; Rect : TRect) : Boolean; overload;

    procedure PlaceControl(const Control : TControl; const Position : TPoint); overload;
    procedure PlaceControl(const Control : TControl; const Rect : TRect); overload;

    function GetWorkAreaRect() : TRect;
    function IsWin95() : Boolean;
    function IsWinXP() : Boolean;    

    function IsHasProperty(AComponent : TComponent; ApropertyName : String) : Boolean;
    function FormHasFocus(Form: TCustomForm): boolean;    
    function PCharToStr(pstr : PChar) : String;

    procedure ContainerApplyUIStyle(Container : TWinControl; UIStyle : TsuiUIStyle; FileTheme : TsuiFileTheme);

var
    g_SUIPackConverting : Boolean = false;    

implementation

procedure DoTrans(Canvas : TCanvas; Control : TWinControl);
var
    DC : HDC;
    SaveIndex : HDC;
    Position: TPoint;
begin
    if Control.Parent <> nil then
    begin
{$R-}
        DC := Canvas.Handle;
        SaveIndex := SaveDC(DC);
        GetViewportOrgEx(DC, Position);
        SetViewportOrgEx(DC, Position.X - Control.Left, Position.Y - Control.Top, nil);
        IntersectClipRect(DC, 0, 0, Control.Parent.ClientWidth, Control.Parent.ClientHeight);
        Control.Parent.Perform(WM_ERASEBKGND, DC, 0);
        Control.Parent.Perform(WM_PAINT, DC, 0);
        RestoreDC(DC, SaveIndex);
{$R+}
    end;
end;

procedure TileDraw(const Canvas : TCanvas; const Picture : TPicture; const Rect : TRect);
var
    i, j : Integer;
begin
    i := 0;
    While i < (Rect.Right - Rect.Left) + Picture.Width do
    begin
        j := 0;
        While j < (Rect.Bottom - Rect.Top) + Picture.Height do
        begin
            Canvas.Draw(i, j, Picture.Graphic);
            Inc(j, Picture.Height);
        end;
        Inc(i, Picture.Width);
    end;
end;

procedure SetWinControlTransparent(Control : TWinControl);
var
    WinStyle : DWORD;
begin
    Control.ControlStyle := Control.ControlStyle - [csOpaque];

    WinStyle := GetWindowLong(Control.Handle, GWL_EXSTYLE );
    WinStyle := WinStyle or WS_EX_TRANSPARENT;
    SetWindowLong(Control.Handle, GWL_EXSTYLE, WinStyle);
end;

function InRect(Point : TPoint; Rect : TRect) : Boolean;
begin
    Result := InRect(Point.X, Point.Y, Rect);
end;

function InRect(X, Y : Integer; Rect : TRect) : Boolean;
begin
    Result := false;

    if (
        (X >= Rect.Left) and
        (X <= Rect.Right) and
        (Y >= Rect.Top) and
        (Y <= Rect.Bottom)
    )then
        Result := True
end;

function GetWorkAreaRect() : TRect;
begin
{$IFDEF SUIPACK_D6UP}
    if (Application = nil) or (Application.MainForm = nil) or (not Screen.HasParent) then
{$ENDIF}
        SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0)
{$IFDEF SUIPACK_D6UP}
    else
        Result := Screen.MonitorFromWindow(Application.MainForm.Handle).WorkAreaRect;
{$ENDIF}
end;

procedure PlaceControl(const Control : TControl; const Position : TPoint);
begin
    Control.Left := Position.X;
    Control.Top := Position.Y;
end;

procedure PlaceControl(const Control : TControl; const Rect : TRect);
begin
    Control.Left := Rect.Left;
    Control.Top := Rect.Top;
    Control.Width := Rect.Right - Rect.Left;
    Control.Height := Rect.Bottom - Rect.Top;
end;

procedure SpitDraw(Source : TBitmap; ACanvas:TCanvas; ARect:TRect; ATransparent : Boolean);
var
    ImageList : TImageList;
    SR, DR, LR1, LR2, LR3, LR4 : TRect;
    TempBmp : TBitmap;
    TransColor : TColor;
    DW, DH : Integer;
    TempInt : Integer;
begin
    TransColor := clFuchsia;//Source.Canvas.Pixels[0, 0];
    DW := ARect.Right - ARect.Left;
    DH := ARect.Bottom - ARect.Top;

    // left-top
    SR := Rect(0, 0, Source.Width div 2, Source.Height div 2);
    DR := Rect(0, 0, DW div 2, DH div 2);
    TempBmp := TBitmap.Create();
    TempInt := Min(SR.Right - SR.Left, DR.Right - DR.Left);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Width := TempInt;
    TempInt := Min(SR.Bottom - SR.Top, DR.Bottom - DR.Top);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Height := TempInt;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Width < (SR.Right - SR.Left) then
            SR.Right := SR.Right - (SR.Right - SR.Left) + TempBmp.Width;

        if TempBmp.Height < (SR.Bottom - SR.Top) then
            SR.Bottom := SR.Bottom - (SR.Bottom - SR.Top) + TempBmp.Height;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        ImageList := TImageList.CreateSize(TempBmp.Width, TempBmp.Height);
        if ATransparent then
            ImageList.AddMasked(TempBmp, TransColor)
        else
            ImageList.Add(TempBmp, nil);
        ImageList.Draw(ACanvas, 0, 0, 0);
        ImageList.Free();
        LR1 := Rect(0, 0, TempBmp.Width, TempBmp.Height);
    end;
    TempBmp.Free();

    // left-bottom
    SR := Rect(0, Source.Height - (Source.Height div 2) + 1, Source.Width div 2, Source.Height);
    DR := Rect(0, DH - (DH div 2) + 1, DW div 2, DH);
    TempBmp := TBitmap.Create();
    TempInt := Min(SR.Right - SR.Left, DR.Right - DR.Left);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Width := TempInt;
    TempInt := Min(SR.Bottom - SR.Top, DR.Bottom - DR.Top);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Height := TempInt;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Height < (SR.Bottom - SR.Top) then
            SR.Top := SR.Top + (SR.Bottom - SR.Top) - TempBmp.Height;

        if TempBmp.Width < (SR.Right - SR.Left) then
            SR.Right := SR.Right - (SR.Right - SR.Left) + TempBmp.Width;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        ImageList := TImageList.CreateSize(TempBmp.Width, TempBmp.Height);
        if ATransparent then
            ImageList.AddMasked(TempBmp, TransColor)
        else
            ImageList.Add(TempBmp, nil);
        ImageList.Draw(ACanvas, 0, ARect.Bottom - TempBmp.Height, 0);
        ImageList.Free();
        LR2 := Rect(0, ARect.Bottom - TempBmp.Height, TempBmp.Width, ARect.Bottom);
    end;
    TempBmp.Free();

    // left-center
    SR := Rect(0, Source.Height div 2, Source.Width div 2, Source.Height - (Source.Height div 2));
    DR := Rect(0, LR1.Bottom, LR1.Right, LR2.Top);

    TempBmp := TBitmap.Create();
    TempBmp.Width := DR.Right - DR.Left;
    TempBmp.Height := DR.Bottom - DR.Top;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Width < (SR.Right - SR.Left) then
            SR.Right := SR.Right - (SR.Right - SR.Left) + TempBmp.Width;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        TempBmp.TransparentColor := TransColor;
        TempBmp.Transparent := true;
        ACanvas.StretchDraw(DR, TempBmp);
    end;
    TempBmp.Free();

    // right-top
    SR := Rect(Source.Width - (Source.Width div 2) + 1, 0, Source.Width, Source.Height div 2);
    DR := Rect(DW - (DW div 2) + 1, 0, DW, DH div 2);
    TempBmp := TBitmap.Create();
    TempInt := Min(SR.Right - SR.Left, DR.Right - DR.Left);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Width := TempInt;
    TempInt := Min(SR.Bottom - SR.Top, DR.Bottom - DR.Top);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Height := TempInt;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Width < (SR.Right - SR.Left) then
            SR.Left := SR.Left + (SR.Right - SR.Left) - TempBmp.Width;

        if TempBmp.Height < (SR.Bottom - SR.Top) then
            SR.Bottom := SR.Bottom - (SR.Bottom - SR.Top) + TempBmp.Height;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        ImageList := TImageList.CreateSize(TempBmp.Width, TempBmp.Height);
        if ATransparent then
            ImageList.AddMasked(TempBmp, TransColor)
        else
            ImageList.Add(TempBmp, nil);
        ImageList.Draw(ACanvas, ARect.Right - TempBmp.Width, 0, 0);
        ImageList.Free();
        LR3 := Rect(ARect.Right - TempBmp.Width, 0, ARect.Right, TempBmp.Height)
    end;
    TempBmp.Free();

    // right-bottom
    SR := Rect(Source.Width - (Source.Width div 2) + 1, Source.Height - (Source.Height div 2) + 1, Source.Width, Source.Height);
    DR := Rect(DW - (DW div 2) + 1, DH - (DH div 2) + 1, DW, DH);
    TempBmp := TBitmap.Create();
    TempInt := Min(SR.Right - SR.Left, DR.Right - DR.Left);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Width := TempInt;
    TempInt := Min(SR.Bottom - SR.Top, DR.Bottom - DR.Top);
    if TempInt < 0 then
        TempInt := 0;
    TempBmp.Height := TempInt;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Width < (SR.Right - SR.Left) then
            SR.Left := SR.Left + (SR.Right - SR.Left) - TempBmp.Width;

        if TempBmp.Height < (SR.Bottom - SR.Top) then
            SR.Top := SR.Top + (SR.Bottom - SR.Top) - TempBmp.Height;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        ImageList := TImageList.CreateSize(TempBmp.Width, TempBmp.Height);
        if ATransparent then
            ImageList.AddMasked(TempBmp, TransColor)
        else
            ImageList.Add(TempBmp, nil);
        ImageList.Draw(ACanvas, ARect.Right - TempBmp.Width, ARect.Bottom - TempBmp.Height, 0);
        ImageList.Free();
        LR4 := Rect(ARect.Right - TempBmp.Width, ARect.Bottom - TempBmp.Height, ARect.Right, ARect.Bottom);
    end;
    TempBmp.Free();

    // right-center
    SR := Rect(Source.Width - (Source.Width div 2) + 1, Source.Height - (Source.Height div 2), Source.Width, Source.Height div 2 + 2);
    DR := Rect(LR3.Left, LR3.Bottom, LR3.Right, LR4.Top);

    TempBmp := TBitmap.Create();
    TempBmp.Width := DR.Right - DR.Left;
    TempBmp.Height := DR.Bottom - DR.Top;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Width < (SR.Right - SR.Left) then
            SR.Left := SR.Left + (SR.Right - SR.Left) - TempBmp.Width;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        TempBmp.TransparentColor := TransColor;
        TempBmp.Transparent := true;
        ACanvas.StretchDraw(DR, TempBmp);
    end;
    TempBmp.Free();

    // center-top
    SR := Rect(Source.Width div 2, 0, Source.Width - (Source.Width div 2) + 1, Source.Height div 2);
    DR := Rect(LR1.Right, 0, LR3.Left, LR1.Bottom);
    TempBmp := TBitmap.Create();
    TempBmp.Width := DR.Right - DR.Left;
    TempBmp.Height := DR.Bottom - DR.Top;

    if (TempBmp.Height <> 0) and (TempBmp.Width <> 0) then
    begin
        if TempBmp.Height < (SR.Bottom - SR.Top) then
            SR.Bottom := SR.Bottom - (SR.Bottom - SR.Top) + TempBmp.Height;

        TempBmp.Canvas.CopyRect(Rect(0, 0, TempBmp.Width, TempBmp.Height), Source.Canvas, SR);
        TempBmp.TransparentColor := TransColor;
        TempBmp.Transparent := true;
        ACanvas.StretchDraw(DR, TempBmp);
    end;
    TempBmp.Free();

    // center-center

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一二三区| 美洲天堂一区二卡三卡四卡视频| 一区二区在线电影| 激情深爱一区二区| 欧美日韩一区二区在线观看视频| 久久久久久久久伊人| 日本伊人午夜精品| 99国产精品久久久久| 国产欧美一区二区在线观看| 三级一区在线视频先锋| 色天天综合久久久久综合片| 国产视频一区二区在线| 日韩精品高清不卡| 欧美亚洲综合色| 有坂深雪av一区二区精品| 成人免费视频一区| 久久久精品人体av艺术| 美美哒免费高清在线观看视频一区二区| 91视频91自| 亚洲天堂中文字幕| 91欧美激情一区二区三区成人| 国产精品网站导航| 豆国产96在线|亚洲| 国产日产欧美一区二区视频| 久久99国产精品尤物| 日韩欧美国产午夜精品| 日本一不卡视频| 欧美日韩国产免费一区二区| 亚洲黄色免费电影| 欧美日韩亚洲综合在线 | 在线一区二区三区做爰视频网站| 欧美高清在线一区二区| 国产成人无遮挡在线视频| 欧美精品一区二区三区很污很色的| 日韩有码一区二区三区| 制服丝袜亚洲精品中文字幕| 日韩电影在线一区二区三区| 91麻豆精品国产91久久久久久| 日韩精品福利网| 这里是久久伊人| 久久成人免费电影| www国产成人免费观看视频 深夜成人网| 紧缚捆绑精品一区二区| www成人在线观看| 成人小视频免费观看| 日韩理论片在线| 欧美日韩在线播放三区四区| 免费不卡在线观看| 久久久99精品免费观看| 99视频精品在线| 亚洲在线免费播放| 日韩欧美卡一卡二| 国产成人免费av在线| 亚洲人精品一区| 欧美欧美欧美欧美| 国产一区二区三区香蕉| 亚洲欧美激情小说另类| 日韩一级片网站| 成人午夜视频免费看| 亚洲国产精品久久艾草纯爱| 欧美成人a在线| 91麻豆swag| 激情成人午夜视频| 亚洲少妇中出一区| 日韩欧美不卡在线观看视频| 成人在线综合网| 午夜视频一区二区三区| 日本一区二区综合亚洲| 欧美在线|欧美| 国产精品一区二区果冻传媒| 亚洲免费av网站| 久久女同性恋中文字幕| 色琪琪一区二区三区亚洲区| 卡一卡二国产精品 | 久久精品视频在线免费观看| av中文字幕亚洲| 蜜臀av一区二区三区| 自拍偷拍国产精品| 久久美女艺术照精彩视频福利播放| 91女厕偷拍女厕偷拍高清| 狠狠色丁香婷婷综合久久片| 一区二区三区免费观看| 国产视频不卡一区| 日韩欧美综合在线| 欧美视频你懂的| 色综合中文字幕国产| 日韩精品一二三区| 一区二区三区在线免费| 国产欧美一区二区精品婷婷 | 国产在线精品一区二区夜色| 亚洲午夜一区二区三区| 中文久久乱码一区二区| 精品国产乱码久久久久久影片| 色94色欧美sute亚洲线路一久| 国产成人在线视频网址| 美日韩一区二区| 三级影片在线观看欧美日韩一区二区| 亚洲人精品午夜| 国产精品久久国产精麻豆99网站| 久久中文字幕电影| 精品国产伦一区二区三区观看体验| 欧美日韩国产成人在线免费| 欧美色精品在线视频| 91在线视频网址| eeuss鲁片一区二区三区| 国产不卡视频在线观看| 国产成人综合视频| 国产a精品视频| 国产一区不卡精品| 国产激情视频一区二区三区欧美 | 国产一区二区三区综合| 美女一区二区视频| 日本在线不卡一区| 美国毛片一区二区| 国产一区美女在线| 国产成人免费9x9x人网站视频| 国产一区二区三区在线观看免费视频 | 亚洲人妖av一区二区| 亚洲视频你懂的| 亚洲国产日韩精品| 亚洲成精国产精品女| 日韩精品福利网| 精品在线免费视频| 国产精品一区二区免费不卡| 懂色一区二区三区免费观看| 成人黄色在线看| 色噜噜狠狠色综合欧洲selulu| 在线视频综合导航| 日韩一二三四区| 久久久国产精华| 自拍偷拍亚洲综合| 午夜精品久久久久久久久| 久久精品国产精品亚洲综合| 久久精工是国产品牌吗| 福利电影一区二区| 在线视频一区二区三区| 欧美一级二级在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲国产精品国自产拍av| 亚洲美女电影在线| 毛片一区二区三区| kk眼镜猥琐国模调教系列一区二区| 91国内精品野花午夜精品 | 国产精品美女久久久久久久久久久| 中文字幕亚洲电影| 奇米在线7777在线精品 | 久久66热偷产精品| 成人精品亚洲人成在线| 欧美在线你懂的| 久久青草国产手机看片福利盒子| 亚洲色图在线播放| 麻豆传媒一区二区三区| 9l国产精品久久久久麻豆| 91精品国产一区二区三区香蕉| 2017欧美狠狠色| 亚洲成av人片观看| 成人v精品蜜桃久久一区| 欧美精品在线视频| 亚洲天堂免费看| 国产一区二区三区在线观看免费| 色综合中文字幕| 国产日产欧美精品一区二区三区| 亚洲一区二区精品久久av| 国产91精品入口| 日韩精品中文字幕一区二区三区| 亚洲精品网站在线观看| 国产伦精一区二区三区| 欧美日韩二区三区| 亚洲天天做日日做天天谢日日欢| 激情小说亚洲一区| 在线不卡的av| 亚洲另类色综合网站| 国产91色综合久久免费分享| 欧美一区二区三区成人| 亚洲自拍偷拍欧美| 99国产精品久久久久| 国产欧美日产一区| 国内精品免费**视频| 欧美一区二区三区视频免费播放| 一区二区三区美女视频| av亚洲产国偷v产偷v自拍| 国产亚洲一二三区| 韩国视频一区二区| 欧美一级国产精品| 日本伊人精品一区二区三区观看方式| 欧美中文一区二区三区| 亚洲精品一二三| 99在线热播精品免费| 国产精品视频yy9299一区| 国产一区三区三区| 久久亚洲精品小早川怜子| 蜜臀精品久久久久久蜜臀| 91精品国产免费| 美女高潮久久久| 日韩一区和二区| 美女视频一区二区| 欧美精品一区二区久久久| 精品一区二区精品| 国产日本亚洲高清| 成人免费福利片|