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

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

?? hemispherebutton.pas

?? 機房管理系統(tǒng) 是用VB設(shè)計的簡單的管理系統(tǒng)
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
      d2 := d2 + b2*(2*x+2)+a2*(-2*y+3);
      x := x + 1;
      y := y - 1;
    end else begin
      d2 := d2 + a2*(-2*y + 3);
      y := y - 1;
    end;
    SetPixelNWay(Round(x), Round(y));
  end;
end;

procedure THemiBtn.RenderButtonFaces(nBorder: Integer; mskBorder, canvUp, canvDown: TCanvas);
var
  glyWidth, glyHeight, glyXOfs,
  x, y, xlen, ylen, x0, x1, y0, y1,
  gX, gY, w, h: Integer;
  cx, cy, Xe, Ye, Ze, atten: Double;
  rr, gg, bb, rrr, ggg, bbb, transp, col: TColor;
  isFromGlyph: Boolean;

  procedure SetFacePixel(pX, pY: Integer; normX, normY, normZ: Double);
    function CalcRGBAtten: TColor;
    begin
      rrr := rr + Round(rr * atten);
      ggg := gg + Round(gg * atten);
      bbb := bb + Round(bb * atten);
      if rrr < 0 then rrr := 0 else if rrr > 255 then rrr := 255;
      if ggg < 0 then ggg := 0 else if ggg > 255 then ggg := 255;
      if bbb < 0 then bbb := 0 else if bbb > 255 then bbb := 255;
      Result := (bbb shl 16) or (ggg shl 8) or rrr;
    end;
  begin
    isFromGlyph := false;
    if GlyphValid then begin
      if fGlyphMapped then begin
        gX := Floor((glyWidth-1) * arctan2(normZ, -normX) / Pi);
        gY := Floor((glyHeight-1) * arctan2(normZ, -normY) / Pi);
      end else begin { map glyph 1:1 }
        gX := Floor(glyWidth/2 + pX - cx);
        gY := Floor(glyHeight/2 + pY - cy);
      end;
      { [gX, gY] inside glyph? }
      if (gX>=0) and (gX<glyWidth) and (gY>=0) and (gY<glyHeight) then begin
        col := bmGlpyh.Canvas.Pixels[glyXOfs + gX, gY];
        if not fGlyphTransparent or (col <> transp) then begin
          rr := col and 255;
          gg := (col shr 8) and 255;
          bb := (col shr 16) and 255;
          isFromGlyph := true;
        end;
      end;
    end;
    if not isFromGlyph then begin
      if fFaceTransparent then begin
        { enable pixels in bmMask only if not on Border }
        if mskBorder.Pixels[pX, pY] <> clWhite then
          bmMask.Canvas.Pixels[pX, pY] := clWhite;
        exit;
      end;
      rr := faceRed;
      gg := faceGreen;
      bb := faceBlue;
    end;

    if (not isFromGlyph and fFaceShaded) or (isFromGlyph and fGlyphShaded) then begin
      atten := fAttenControl * (cLightX*normX + cLightY*normY + cLightZ*normZ);
      canvUp.Pixels[pX, pY] := CalcRGBAtten;
      atten := -atten;
      canvDown.Pixels[pX, pY] := CalcRGBAtten;
    end else begin
      col := (bb shl 16) or (gg shl 8) or rr;
      canvUp.Pixels[pX, pY] := col;
      canvDown.Pixels[pX, pY] := col;
    end;
  end;

begin
  transp := bmGlpyh.Canvas.Pixels[0, bmGlpyh.Height-1];
  if GlyphValid then begin
    glyHeight := bmGlpyh.Height;
    if fNumGlyphs = 1 then begin
      glyWidth := bmGlpyh.Width;
      glyXOfs := 0;
    end else begin
      glyWidth := bmGlpyh.Width div fNumGlyphs;
      glyXOfs := glyWidth * (fGlyphIndex-1);
    end;
  end;
  cx := Width/2;
  cy := Height/2;
  w := Width - nBorder * fBevelWidth;
  h := Height - nBorder * fBevelWidth;
  ylen := Floor(h/2);
  for y:=0 to ylen do begin
    Ye := y/cy;
    y0 := Floor(cy - y);
    y1 := Ceil(cy + y);
    xlen := Ceil(sqrt(1-sqr(Ye))*w/2);
    if xlen > 1 then
      for x:=0 to xlen do begin
        Xe := x/cx;
        Ze := 1-sqrt(sqr(Xe)+sqr(Ye));
        x0 := Floor(cx - x);
        x1 := Ceil(cx + x);
        SetFacePixel(x1,y0,  Xe,-Ye,Ze);  { Right-Top    }
        SetFacePixel(x1,y1,  Xe, Ye,Ze);  { Right-Bottom }
        SetFacePixel(x0,y1, -Xe, Ye,Ze);  { Left-Bottom  }
        SetFacePixel(x0,y0, -Xe,-Ye,Ze);  { Left-Top     }
      end;
  end;
end;

procedure THemiBtn.CalcImages;
var
  r: TRect;
  w, h, nBorder: Integer;
  bmTmp, mskMiddle, mskInner,
  bmDown, bmUp, bmBorderOuter, bmBorderInner: TBitmap;

  function NewBitmap(IsMask: Boolean): TBitmap;
  begin
    Result := TBitmap.Create;
    Result.Width := w;
    Result.Height := h;
    if IsMask then begin
      Result.Canvas.Brush.Color := clWhite;
      Result.Canvas.FillRect(r);
      Result.Canvas.Pen.Color := clBlack;
      Result.Canvas.Brush.Color := clBlack;
    end;
  end;

  procedure DrawMasks;
  { All masks (mskMiddle, mskInner and bmMask) contain white pixels
    for background, black for foreground pixels. }
  begin
    if (fBevelOuter = hbNone) and (fBevelInner = hbNone) then
      mskMiddle.Canvas.Ellipse(0,0,w,h)
    else
      mskMiddle.Canvas.Ellipse(fBevelWidth, fBevelWidth, w-fBevelWidth, h-fBevelWidth);
    if (fBevelOuter = hbNone) or (fBevelInner = hbNone) then
      mskInner.Canvas.CopyRect(r, mskMiddle.Canvas, r)
    else
      mskInner.Canvas.Ellipse(2*fBevelWidth, 2*fBevelWidth, w-fBevelWidth*2, h-fBevelWidth*2);
    bmMask.Width := w;
    bmMask.Height := h;
    bmMask.Canvas.Brush.Color := clWhite;
    bmMask.Canvas.FillRect(r);
    bmMask.Canvas.Pen.Color := clBlack;
    bmMask.Canvas.Brush.Color := clBlack;
    bmMask.Canvas.Ellipse(0,0,w,h);
  end;

  procedure DrawBorders;
  var
    ofs: Integer;
  begin
    nBorder := 0;
    if (fBevelOuter = hbNone) and (fBevelInner = hbNone) then
      exit;
    if (fBevelOuter = hbNone) and (fBevelInner <> hbNone) then begin
      nBorder := 1;
      bmBorderOuter := NewBitmap(False);                     { inner border only }
      ofs := Ceil(fBevelWidth / 2);
      RenderBorder(bmBorderOuter.Canvas, ofs, ofs, w-ofs, h-ofs, fBevelWidth, fBevelInner = hbRaised);
      bmBorderOuter.Canvas.CopyMode := cmSrcAnd;             { clip to mskMiddle and !mskOuter }
      bmBorderOuter.Canvas.CopyRect(r, mskMiddle.Canvas, r);
    end else begin
      if (fBevelOuter <> hbNone) then begin                  { outer border }
        inc(nBorder);
        bmBorderOuter := NewBitmap(False);
        ofs := Floor(fBevelWidth / 2);
        RenderBorder(bmBorderOuter.Canvas, ofs, ofs, w-ofs, h-ofs, fBevelWidth, fBevelOuter = hbRaised);
        bmBorderOuter.Canvas.CopyMode := cmSrcAnd;           { clip to mskMiddle and !mskOuter }
        bmBorderOuter.Canvas.CopyRect(r, mskMiddle.Canvas, r);
      end;
      if (fBevelInner <> hbNone) then begin                  { inner border }
        inc(nBorder);
        bmBorderInner := NewBitmap(False);
        ofs := Ceil(fBevelWidth + fBevelWidth/2);
        RenderBorder(bmBorderInner.Canvas, ofs, ofs, w-ofs, h-ofs, fBevelWidth, fBevelInner = hbRaised);
        bmBorderInner.Canvas.CopyMode := cmSrcAnd;           { clip to mskInner and !mskMiddle }
        bmBorderInner.Canvas.CopyRect(r, mskInner.Canvas, r);
        if (fBevelOuter <> hbNone) then begin
          bmTmp.Canvas.CopyMode := cmNotSrcCopy;             { invert & copy }
          bmTmp.Canvas.CopyRect(r, mskMiddle.Canvas, r);
          bmBorderInner.Canvas.CopyRect(r, bmTmp.Canvas, r);
        end;
      end;
    end;
  end;

  procedure DrawCaption;
  var
    tx, ty: Integer;
  begin
    if fCaption = '' then
      exit;
    bmUp.Canvas.Font.Assign(Font);
    bmDown.Canvas.Font.Assign(Font);
    bmUp.Canvas.Brush.Style := bsClear;
    bmDown.Canvas.Brush.Style := bsClear;
    tx := Round((w-2 - bmUp.Canvas.TextWidth(fCaption))/2);
    ty := Round((h-2 - bmUp.Canvas.TextHeight(fCaption))/2);
    bmUp.Canvas.TextOut(tx, ty, fCaption);
    bmDown.Canvas.TextOut(tx, ty, fCaption);
    if fFaceTransparent then begin { paint the caption (in black) into bmMask }
      bmMask.Canvas.Font.Assign(Font);
      bmMask.Canvas.Font.Color := clBlack;
      bmMask.Canvas.Brush.Style := bsClear;
      bmMask.Canvas.TextOut(tx, ty, fCaption);
    end;
  end;

  procedure CombineImages;
  var
    ofs: Integer;
  begin
    bmTmp.Width := w;
    bmTmp.Height := h;
    bmTmp.Canvas.CopyMode := cmNotSrcCopy;  { invert & copy }
    bmTmp.Canvas.CopyRect(r, mskInner.Canvas, r);
    if nBorder > 0 then begin  { clip buttons to !mskInner }
      bmUp.Canvas.CopyMode := cmSrcAnd;
      bmUp.Canvas.CopyRect(r, bmTmp.Canvas, r);
      bmDown.Canvas.CopyMode := cmSrcAnd;
      bmDown.Canvas.CopyRect(r, bmTmp.Canvas, r);
    end;

    bmUnpressed.Width := w; bmUnpressed.Height := h;
    bmUnpressed.Canvas.CopyMode := cmSrcCopy;
    bmUnpressed.Canvas.CopyRect(r, bmUp.Canvas, r);
    bmUnpressed.Canvas.CopyMode := cmSrcPaint;  { OR }
    bmPressed.Width := w; bmPressed.Height := h;
    bmPressed.Canvas.CopyMode := cmSrcCopy;
    bmPressed.Canvas.CopyRect(r, bmDown.Canvas, r);
    bmPressed.Canvas.CopyMode := cmSrcPaint;
    if bmBorderOuter <> nil then begin
      bmUnpressed.Canvas.CopyRect(r, bmBorderOuter.Canvas, r);
      bmPressed.Canvas.CopyRect(r, bmBorderOuter.Canvas, r);
    end;
    if bmBorderInner <> nil then begin
      bmUnpressed.Canvas.CopyRect(r, bmBorderInner.Canvas, r);
      bmPressed.Canvas.CopyRect(r, bmBorderInner.Canvas, r);
    end;
    if fBorderStyle = bsSingle then begin
      ofs := nBorder*fBevelWidth;
      bmUnpressed.Canvas.Pen.Color := fBorderColor;
      bmUnpressed.Canvas.Brush.Style := bsClear;
      bmUnpressed.Canvas.Ellipse(ofs, ofs, bmUnpressed.Width-ofs, bmUnpressed.Height-ofs);
      bmPressed.Canvas.Pen.Color := fBorderColor;
      bmPressed.Canvas.Brush.Style := bsClear;
      bmPressed.Canvas.Ellipse(ofs, ofs, bmPressed.Width-ofs, bmPressed.Height-ofs);
    end;
  end;

begin
  w := Width;
  h := Height;
  if (csLoading in ComponentState) or (w < 2) or (h < 2) then
    exit;
  r := Rect(0,0,w,h);
  bmTmp := nil; mskMiddle := nil; mskInner := nil; bmDown := nil; bmUp := nil;
  bmBorderOuter := nil; bmBorderInner := nil;
  try
    bmTmp := NewBitmap(False);
    bmDown := NewBitmap(False);
    bmUp := NewBitmap(False);
    mskMiddle := NewBitmap(True);
    mskInner := NewBitmap(True);

    DrawMasks;
    DrawBorders;
    RenderButtonFaces(nBorder, mskInner.Canvas, bmUp.Canvas, bmDown.Canvas);
    DrawCaption;

    CombineImages;
  finally
    bmTmp.Free; mskMiddle.Free; mskInner.Free; bmDown.Free; bmUp.Free;
    bmBorderOuter.Free; bmBorderInner.Free;
  end;
end;

procedure THemiBtn.Paint;
var
  r: TRect;
  w, h: Integer;
  bmBuf, bmTmp: TBitmap;
begin
  if csLoading in ComponentState then
    exit;
  w := bmMask.Width;
  h := bmMask.Height;
  r := Rect(0, 0, w, h);
  bmTmp := nil;
  bmBuf := nil;
  try
    bmBuf := TBitmap.Create;
    bmBuf.Width := w;
    bmBuf.Height := h;
    bmBuf.Canvas.CopyMode := cmSrcCopy;
    bmBuf.Canvas.CopyRect(r, Canvas, r);
    bmBuf.Canvas.CopyMode := cmSrcAnd;
    bmBuf.Canvas.CopyRect(r, bmMask.Canvas, r);  { bmBuf contains erased background }

    bmTmp := TBitmap.Create;
    bmTmp.Width := w;
    bmTmp.Height := h;
    bmTmp.Canvas.CopyRect(r, bmMask.Canvas, r);
    bmTmp.Canvas.CopyMode := cmSrcErase;  { NOT self AND other }
    if fDown then bmTmp.Canvas.CopyRect(r, bmPressed.Canvas, r)
    else bmTmp.Canvas.CopyRect(r, bmUnpressed.Canvas, r);
    bmBuf.Canvas.CopyMode := cmSrcPaint;  { self OR other }
    bmBuf.Canvas.CopyRect(r, bmTmp.Canvas, r);

    Canvas.CopyRect(r, bmBuf.Canvas, r);
  finally
    bmTmp.Free;
    bmBuf.Free;
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区毛片| 国产视频一区在线播放| 亚洲日本va午夜在线电影| 免费人成黄页网站在线一区二区| 色综合中文字幕国产 | 欧美日韩中文字幕一区二区| 国产视频一区二区在线| 韩国女主播一区二区三区| 精品国产一区二区三区久久影院 | 国产不卡一区视频| 久久五月婷婷丁香社区| 另类小说欧美激情| 91麻豆精品国产91久久久久| 欧美aaaaa成人免费观看视频| 91精品视频网| 韩国一区二区三区| 中文字幕一区二区三区精华液| 91在线观看视频| 亚洲精品菠萝久久久久久久| 欧美中文字幕一区| 日韩av在线免费观看不卡| 日韩欧美国产综合在线一区二区三区| 日本欧美在线看| 久久久国产精品午夜一区ai换脸| 成人精品国产一区二区4080| 国产精品免费免费| 欧美性受xxxx| 麻豆精品视频在线| 国产精品素人视频| 日本韩国视频一区二区| 日韩电影在线一区二区| 亚洲精品一区二区精华| 成人免费视频网站在线观看| 亚洲一区免费观看| 精品国产免费人成在线观看| 99久久精品国产毛片| 亚洲综合色区另类av| 日韩欧美综合在线| 成人午夜伦理影院| 亚洲午夜久久久久久久久电影院| 日韩精品综合一本久道在线视频| 国产成人av一区二区三区在线 | 精品影院一区二区久久久| 久久免费精品国产久精品久久久久| av亚洲精华国产精华精| 日韩av一区二| 国产精品久久毛片av大全日韩| 欧美亚洲尤物久久| 国产精品 欧美精品| 亚洲综合在线视频| 久久久久国产精品麻豆ai换脸| 欧亚一区二区三区| 国产99久久久国产精品潘金 | 欧美日韩亚洲综合一区 | 中文字幕中文字幕在线一区| 欧美日韩国产系列| 99re热这里只有精品视频| 轻轻草成人在线| 国产欧美日韩在线| 日韩亚洲国产中文字幕欧美| 日本精品免费观看高清观看| 国产成人在线视频免费播放| 日产国产欧美视频一区精品| 亚洲国产精品麻豆| 亚洲网友自拍偷拍| 亚洲精品成人a在线观看| 亚洲人精品午夜| 亚洲三级在线看| 亚洲女同ⅹxx女同tv| 亚洲免费高清视频在线| 亚洲欧洲日韩一区二区三区| 国产精品视频免费| 国产精品私人影院| 自拍偷拍亚洲激情| 亚洲精品国产品国语在线app| 亚洲欧美欧美一区二区三区| 亚洲欧美电影院| 一区二区三区日韩精品| 一区二区三区日韩在线观看| 亚洲高清视频的网址| 日韩国产高清影视| 久久精品国产亚洲高清剧情介绍| 麻豆精品国产传媒mv男同| 久久草av在线| 国产盗摄女厕一区二区三区| 成人天堂资源www在线| www.欧美精品一二区| 9i在线看片成人免费| 色先锋资源久久综合| 欧美三级视频在线观看| 欧美一区二区三区四区在线观看| 欧美大胆一级视频| 中文字幕欧美国产| 亚洲免费观看高清完整| 石原莉奈在线亚洲二区| 激情综合色播五月| 成人黄色777网| 欧美日韩综合在线免费观看| 欧美电影免费观看高清完整版| 欧美激情一区二区| 亚洲主播在线观看| 韩国午夜理伦三级不卡影院| av在线不卡观看免费观看| 欧美日韩1区2区| 国产网站一区二区| 亚洲综合一二区| 精品亚洲aⅴ乱码一区二区三区| 国产91精品一区二区麻豆网站 | 色婷婷av一区二区三区之一色屋| 欧美日韩和欧美的一区二区| 2022国产精品视频| 一区二区在线观看不卡| 久久99蜜桃精品| 91麻豆精东视频| www久久久久| 一区二区三区不卡在线观看 | 国产日韩欧美电影| 日本一区二区三区dvd视频在线| 欧美极品另类videosde| 亚洲18色成人| 国产91丝袜在线播放| 欧美人伦禁忌dvd放荡欲情| 久久久久99精品一区| 亚洲成人免费av| 成人一区二区三区在线观看| 日韩欧美色综合网站| 亚洲精选在线视频| 国产成人免费视频| 欧美一卡二卡三卡四卡| 一区二区三区成人| 成人性生交大片免费看在线播放| 91精品国产手机| 亚洲一区二三区| 成人免费视频一区二区| 精品国产免费视频| 日韩中文字幕一区二区三区| 91首页免费视频| 国产欧美日韩一区二区三区在线观看| 图片区小说区区亚洲影院| 色哟哟国产精品| 中文一区一区三区高中清不卡| 美日韩一区二区| 欧美日本一区二区在线观看| 美女在线一区二区| 欧美一区在线视频| 亚洲激情av在线| 国产盗摄一区二区| 精品国产1区二区| 视频在线在亚洲| 精品视频一区二区不卡| 自拍偷拍欧美激情| 暴力调教一区二区三区| 日本一区二区三区久久久久久久久不 | 欧美疯狂做受xxxx富婆| 伊人一区二区三区| 91麻豆蜜桃一区二区三区| 最新日韩在线视频| 91在线一区二区| 亚洲精品成人悠悠色影视| 91麻豆国产自产在线观看| 亚洲欧美日韩综合aⅴ视频| 99久久精品国产精品久久| 国产精品免费免费| 99精品视频一区二区| **网站欧美大片在线观看| 99久久久久久99| 欧美色综合网站| 亚洲国产一区二区视频| 99精品视频在线免费观看| 国产精品久久久99| www.66久久| 一区二区在线观看免费| 欧美在线999| 亚洲国产精品影院| 5858s免费视频成人| 蜜臀av一区二区在线免费观看 | 色婷婷av一区二区| 一区二区欧美精品| 欧美日韩一区二区三区高清| 五月天激情综合| 亚洲精品在线观看视频| 国产99久久久国产精品潘金网站| 国产精品少妇自拍| 欧美性生活大片视频| 免费的成人av| 国产欧美日韩综合精品一区二区| 99天天综合性| 亚洲成人综合视频| 亚洲午夜免费视频| 欧美一级搡bbbb搡bbbb| 国产精品一区二区无线| 18成人在线视频| 777午夜精品视频在线播放| 精品一区二区综合| 中文字幕视频一区二区三区久| 欧美日韩中文国产| 国产激情一区二区三区四区| 亚洲日本va午夜在线电影| 日韩一区二区在线看| 成人激情午夜影院|