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

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

?? ugsimage.pas

?? [原創]這是我寫的一個圖像組件!組件中使用了GraphicEx庫
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  if AInterval>0 then
  begin
    if SetTimer(FWindowHandle, 1, AInterval, nil) = 0 then
      raise EOutOfResources.Create('播放動畫失敗!');
  end;
end;

function TGSImage.getImageCount:Integer;
begin
    Result:=0;
end;

procedure TGSImage.setImageCount(const value:Integer);
begin

end;

(******************************************************************************)

procedure TGSImage.set_show_border(const value:Boolean);
begin
    FShowBorder:=value;
    Repaint;  
end;

procedure TGSImage.set_borders(const value:TBoxBorders);
begin
    FBoxBorders:=value;
    Repaint;
end;

procedure TGSImage.set_border_width(const value:integer);
begin
    if (value<0) or (value>400) then
       raise Exception.Create('非法數值!');
    FBorderWidth:=value;
    Repaint;
end;

procedure TGSImage.set_border_color(const value:TColor);
begin
    FBorderColor:=value;
    Repaint;
end;

procedure TGSImage.DrawBorder();
begin
    //給制邊框
    FCanvas.Pen.Color:=FBorderColor;
    FCanvas.Brush.Color:=FBorderColor;
    if bbleft in FBoxBorders then
    begin
       //繪制左邊框
       FCanvas.FillRect(Rect(0,0,FBorderWidth,Height));
    end;
    if bbtop in FBoxBorders then
    begin
       //繪制頂邊框
       FCanvas.FillRect(Rect(0,0,Width,FBorderWidth));
    end;
    if bbbottom in FBoxBorders then
    begin
       //繪制底邊框
       FCanvas.FillRect(Rect(0,Height-FBorderWidth,Width,Height));
    end;
    if bbright in FBoxBorders then
    begin
       //繪制右邊框
       FCanvas.FillRect(Rect(Width-FBorderWidth,0,Width,Height));
    end;
end;

procedure TGSImage.DrawClientRect();
begin
    //重新繪制客戶區
    FCanvas.Brush.Style:=FBrushStyle;
    FCanvas.Brush.Color:=Color;
    FCanvas.FillRect(GetClientRect);
end;

procedure TGSImage.DrawPicture();
var
  Rct,Tmp:TRect;
  X,H,I:Integer;
begin
    //繪制圖像
    if not Assigned(FPicture) then Exit;
    if (not Assigned(FPicture.Graphic)) or FPicture.Graphic.Empty then Exit;
    Rct:=GetClientRect; 
    if FSmall then
    begin
        H:=FSmallHeight;
        I:=FSmallWidth;
    end else begin
        H:=FPicture.Height;
        I:=FPicture.Width;
    end;
    SetStretchBltMode(FCanvas.Handle,HalfTone);
    if FAutoSize then
    begin
       X:=0;
       if FShowBorder then x:=FBorderWidth;
       if ((Self.ClientHeight<>H) and (not (Align in [alClient,alLeft,alRight]))) or
          ((Self.ClientWidth<>I) and (not (Align in [alTop,alBottom,alClient]))) then
       begin
          ClientWidth:=I;
          ClientHeight:=H;
          Exit;
       end;
    end else if not (FStyle in [isRepeat]) then begin

       case FHAlign of
          iaHLeft   :begin
                         if FStyle<>isStretch then
                            Rct.Right:=I;
                     end;
          iaHCenter :begin
                         Rct.Left:=(ClientWidth div 2)-(I div 2);
                         Rct.Right:=(ClientWidth div 2)+(I div 2);
                         if I mod 2<>0 then Rct.Right:=Rct.Right+1;
                     end;
          iaHRight  :begin
                         Rct.Left:=(ClientWidth-I);
                         if FStyle<>isStretch then
                            Rct.Right:=ClientWidth;
                     end;
       end;
       case FVAlign of
          iaVTop    :begin
                         if FStyle<>isStretch then
                            Rct.Bottom:=H;
                     end;
          iaVCenter :begin
                         Rct.Top:=(ClientHeight div 2)-(H div 2);
                         Rct.Bottom:=(ClientHeight div 2)+(H div 2);
                         if H mod 2<>0 then Rct.Bottom:=Rct.Bottom+1;
                     end;
          iaVBottom :begin
                         Rct.Top:=ClientHeight-H;
                         if FStyle<>isStretch then
                            Rct.Bottom:=ClientHeight;
                     end;
       end;
    end;
    
    case FStyle of
       isNone    :begin
                      if Rct.Right-Rct.Left>FPicture.Width then
                         Rct.Right:=Rct.Left+fpicture.Width;
                      if Rct.Bottom-rct.Top>FPicture.Height then
                         Rct.Bottom:=Rct.Top+FPicture.Height;
                      FCanvas.StretchDraw(Rct,FPicture.Graphic);
                  end;
       isStretch :begin
                      FCanvas.StretchDraw(Rct,FPicture.Graphic);
                  end;
       isRepeat  :begin
                      H:=Rct.Top;
                      I:=Rct.Left;
                      while True do
                      begin
                          if (I>=Rct.Right) then
                          begin
                             if FSmall then
                                H:=FSmallHeight+H
                             else
                                H:=FPicture.Height+H;
                             I:=Rct.Left;
                          end;
                          if FSmall then
                          begin
                             Tmp:=Rect(I,H,FSmallWidth+I,FSmallHeight+H);
                             I:=FSmallWidth+I;
                             FCanvas.StretchDraw(Tmp,FPicture.Graphic);
                          end else begin
                             Tmp:=Rect(I,H,FPicture.Width+I,FPicture.Height+H);
                             I:=FPicture.Width+I;
                             FCanvas.StretchDraw(Tmp,FPicture.Graphic);
                          end;

                          if  (H>=Rct.Bottom) then Break;
                      end;
                  end;
    end;
end;

procedure TGSImage.DrawGif();
begin

end;

procedure TGSImage.Paint;
begin
    ClearCanvas;
    inherited;
    DrawClientRect();
    if FPlayGif and (FImageType=itGif) then
    begin

    end else begin
       DrawPicture();
    end;
    if ShowBorder and (FBorderWidth>0) then DrawBorder;
end;

procedure TGSImage.ClearCanvas;
var
  BS:TBrushStyle;
begin
    BS:=FCanvas.Brush.Style;
    FCanvas.Brush.Color:=Color;
    FCanvas.Brush.Style:=bsClear;
    FCanvas.Rectangle(0, 0, Width, Height);
    FCanvas.Brush.Style:=BS;
end;

function TGSImage.GetClientRect: TRect;
begin
    if FShowBorder then
    begin
       Result:=Rect(FBorderWidth,FBorderWidth,Width-FBorderWidth,height-FBorderWidth);
    end else begin
       Result:=inherited GetClientRect();
    end;
end;

procedure TGSImage.SetPicture(const value:TPicture);
begin
    if Assigned(value) then
    begin
       FPicture.Assign(value);
       Repaint;
    end;
end;

procedure TGSImage.DoTimer;
begin
  //
end;

(******************************************************************************)

constructor TGSImage.Create(AOwner:TComponent);
begin
    ControlStyle := ControlStyle + [csReplicatable,csAcceptsControls];
    inherited Create(AOwner);

    FFirstEnter:=True;
    FWindowHandle:=0;
    FImageType:=itUnknow;
    FPicture:=TPicture.Create;
    FPicture.OnChange:=DoChange;
    FCanvas:=TControlCanvas.Create;
    TControlCanvas(FCanvas).Control:=Self;
    set_show_border(False);
    set_border_width(1);
    set_border_color(clBlack);
    set_borders([bbLeft,bbTop,bbRight,bbBottom]);
    SetBrushStyle(bsSolid);
    SetStyle(isNone);
    setHAlign(iaHCenter);
    setVAlign(iaVCenter);
    SetAutoSize(True);
    SetSmall(False);
    SetSmallHeight(150);
    SetSmallWidth(150);
    SetSmallBackColor(clWhite);

    {$IFDEF MSWINDOWS}
       FWindowHandle := Classes.AllocateHWnd(WndProc);
    {$ENDIF}
    {$IFDEF LINUX}
       FWindowHandle := WinUtils.AllocateHWnd(WndProc);
    {$ENDIF}
end;

destructor TGSImage.Destroy;
begin
    UpdateTimer(0);
    if FWindowHandle>0 then
    begin
       {$IFDEF MSWINDOWS}
          Classes.DeallocateHWnd(FWindowHandle);
       {$ENDIF}
       {$IFDEF LINUX}
          WinUtils.DeallocateHWnd(FWindowHandle);
       {$ENDIF}
    end;
    FreeAndNil(FPicture);
    FreeAndNil(FCanvas);
    inherited;
end;

function TGSImage.Jpg2BMP(const filename:string):TBitmap;
Var
  mybmp: TBitmap;
  AJpeg: TJpegImage;
  S:string;
begin
    Result:=nil;
    S:=Trim(filename);
    if (S='') or (not FileExists(S)) then Exit;
    AJpeg := TJpegImage.Create;
    try AJpeg.LoadFromFile(S);except AJpeg:=nil;end;
    if Assigned(AJpeg) then
    begin
        Result:=Jpg2BMP(AJpeg);
    end;//根據長寬比例實現縮略圖
end;

function TGSImage.Jpg2BMP(const AJpeg:TJpegImage):TBitmap;
Var
  mybmp: TBitmap;
begin
    Result:=nil;
    if not Assigned(AJpeg) then Exit;
    Result:= TBitmap.Create;
    try
       AJpeg.DIBNeeded;
       Result.Assign(AJpeg);
    except
       FreeAndNil(Result);
    end;
end;

function TGSImage.GetSmallImage(const ABmp:TBitmap;const width,height:integer;const BaclgroundColor:TColor=clBlack):TBitmap;
Var
  mybmp: TBitmap;
  r:Double;
  a,b:Double;
  Rct1,Rct2:TRect;
begin
    //生成一幅縮略圖
    Result:=nil;
    if not Assigned(ABmp) then Exit;
    Result:= TBitmap.Create;
    try
       mybmp:=ABmp;
       a:=mybmp.Width;
       b:=mybmp.Height;
       r:=a/b;
       result.Width:=width;
       result.Height:=height;
       result.Canvas.Brush.Color:=BaclgroundColor;
       result.Canvas.FillRect(rect(0,0,width,height));
       SetStretchBltMode(result.Canvas.Handle,HalfTone);//SetStretchBltMode函數可以設置指定設備環境中的位圖拉伸模式
       
       if r<1.25 then
       begin
          Rct1:=rect(round(result.Width/2)-round(result.Height*r/2),0,round(result.Width/2)-round(result.Height*r/2)+round(result.Height*r),result.Height);
          Rct2:=rect(0,0,mybmp.Width,mybmp.Height);
       end else begin
          Rct1:=rect(0,round(result.Height/2)-round(result.width/r/2),result.Width,round(result.Height/2)-round(result.width/r/2)+round(result.width/r));
          Rct2:=rect(0,0,mybmp.Width,mybmp.Height);
       end;
       Result.Canvas.CopyRect(Rct1,mybmp.Canvas,Rct2);
    except
       FreeAndNil(Result);
    end;
end;

procedure TGSImage.Reset;
begin
    FreeAndNil(FPicture);
    FPicture:=TPicture.Create;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷亚洲精品| 麻豆中文一区二区| 中文子幕无线码一区tr| 精品国产乱码久久久久久1区2区 | 美腿丝袜亚洲一区| 亚洲激情中文1区| 亚洲狠狠丁香婷婷综合久久久| 国产精品久久久久久久浪潮网站 | 欧美极品xxx| 2021中文字幕一区亚洲| 久久这里只有精品首页| 久久免费的精品国产v∧| 精品久久国产97色综合| 久久综合99re88久久爱| 欧美激情一区三区| 亚洲三级免费观看| 亚洲aⅴ怡春院| 久久国产精品露脸对白| 国产99精品国产| 欧美系列一区二区| 欧美成人性战久久| 国产精品久久久久久久久晋中| 国产精品高潮久久久久无| 亚洲精品精品亚洲| 天堂va蜜桃一区二区三区漫画版| 久久99在线观看| 99视频国产精品| 日韩一区二区在线播放| 久久综合久久99| 一区二区三区在线不卡| 另类小说视频一区二区| youjizz国产精品| 欧美丰满少妇xxxbbb| 久久精品一区二区三区不卡牛牛| 最新高清无码专区| 日本免费新一区视频| 国产mv日韩mv欧美| 日韩一区二区三区免费观看| 国产精品久久777777| 日韩精品亚洲专区| 99久久99久久久精品齐齐| 5566中文字幕一区二区电影| 欧美韩日一区二区三区四区| 婷婷综合在线观看| caoporn国产精品| 精品国产乱码久久久久久1区2区| 一级做a爱片久久| 国产馆精品极品| 日韩一区二区在线观看视频 | 天天综合网 天天综合色| 国产高清在线观看免费不卡| 欧美体内she精视频| 国产日韩欧美在线一区| 日本欧美一区二区| 色综合久久66| 国产精品对白交换视频 | 色综合欧美在线视频区| 精品久久久久一区| 青青青伊人色综合久久| 在线视频亚洲一区| 久久99国产精品久久99| 亚洲高清中文字幕| 国产在线视频一区二区| 67194成人在线观看| 一区二区三区免费网站| gogogo免费视频观看亚洲一| 欧美精品一区二区三区很污很色的 | 亚洲欧洲在线观看av| 在线亚洲免费视频| 狠狠色丁香久久婷婷综| 亚洲欧美日韩人成在线播放| 欧美一区二区三区在线观看| 丁香五精品蜜臀久久久久99网站| 亚洲日本在线视频观看| 欧美老女人第四色| 波波电影院一区二区三区| 青草av.久久免费一区| 亚洲日本一区二区| 久久婷婷久久一区二区三区| 欧美丝袜自拍制服另类| 成人av网站免费| 日韩综合小视频| 亚洲卡通动漫在线| 久久久亚洲精华液精华液精华液| 欧美在线免费观看视频| 国产91综合一区在线观看| 日韩黄色在线观看| 一区二区三区在线高清| 国产精品久久久久影院色老大| 欧美一二三区在线| 欧美欧美欧美欧美首页| 不卡免费追剧大全电视剧网站| 极品美女销魂一区二区三区| 亚洲国产精品久久久久秋霞影院| 久久亚洲私人国产精品va媚药| 在线播放中文一区| 欧美优质美女网站| 91视频一区二区| 99在线精品观看| 成人av电影免费在线播放| 国产麻豆午夜三级精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲专区一二三| 亚洲综合色自拍一区| 亚洲丝袜美腿综合| 综合激情成人伊人| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 精品久久久久av影院| 精品国产网站在线观看| 欧美电影免费观看高清完整版在线 | 99久精品国产| 成人美女在线观看| 国产69精品久久久久777| 高清日韩电视剧大全免费| 国产福利91精品| 国产一区二区三区蝌蚪| 国产在线国偷精品免费看| 麻豆91在线观看| 国内精品久久久久影院薰衣草| 久久91精品国产91久久小草 | 成人免费电影视频| 成人va在线观看| 91在线视频播放地址| 欧美专区在线观看一区| 欧美色手机在线观看| 777久久久精品| 精品久久久久香蕉网| 日本一区二区三区高清不卡| 久久久久青草大香线综合精品| 国产视频一区二区在线| 成人欧美一区二区三区小说 | 在线精品视频一区二区三四 | 午夜欧美电影在线观看| 亚洲成人精品一区| 美女视频免费一区| 岛国av在线一区| 色婷婷狠狠综合| 69久久夜色精品国产69蝌蚪网| 日韩午夜激情电影| 国产精品乱人伦一区二区| 一区二区国产视频| 极品少妇一区二区| 99久久伊人精品| 欧美狂野另类xxxxoooo| 久久亚洲一区二区三区四区| 综合av第一页| 久久99国产精品久久| 99久久免费国产| 日韩欧美国产高清| 亚洲精品欧美激情| 久久99国产乱子伦精品免费| 91在线一区二区三区| 在线播放视频一区| 中文字幕 久热精品 视频在线| 午夜视频在线观看一区二区| 国产精品中文有码| 欧美性极品少妇| 国产精品区一区二区三区| 亚洲国产成人av| 国产成人亚洲综合a∨猫咪| 欧洲精品中文字幕| 欧美激情综合五月色丁香小说| 午夜精品久久久久久久| 丰满亚洲少妇av| 欧美一区日本一区韩国一区| 中文字幕一区二区三区av| 免费观看在线色综合| 在线观看成人免费视频| 国产欧美日韩一区二区三区在线观看| 亚洲一区二区三区激情| 成人免费的视频| 日韩一区二区三区精品视频| 亚洲理论在线观看| 国产91综合一区在线观看| 精品久久久久香蕉网| 婷婷久久综合九色国产成人| 99久久99久久综合| 欧美激情一区二区三区在线| 久草中文综合在线| 日韩一区二区影院| 人人狠狠综合久久亚洲| 欧美调教femdomvk| 亚洲精品视频免费看| 99国产精品视频免费观看| 精品国产91久久久久久久妲己| 婷婷综合五月天| 欧美电影在哪看比较好| 亚洲成人在线免费| 欧美日韩五月天| 亚洲一区免费在线观看| 91高清在线观看| 亚洲一区二区在线免费看| 色8久久人人97超碰香蕉987| 综合在线观看色| 91在线精品秘密一区二区| |精品福利一区二区三区| 成人精品一区二区三区四区 | 午夜激情久久久| 欧美日韩国产精品成人| 视频一区视频二区中文字幕|