首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ Builder 實作異形按鈕 (圓形、三角形)

     編輯:關於C++

利用視窗區域 API 建立非矩形按鈕

Windows 95 引入視窗區域,按鈕可在執行期設定任意形狀。設計時仍為矩形,執行時套用區域。

兩步驟

  1. 建立區域:CreateEllipticRgn (圓/橢圓)、CreatePolygonRgn (多邊形)、CreateRectRgn、CreateRoundRectRgn,複雜形狀可用 CombineRgn 組合。
  2. 套用區域:SetWindowRgn 指派給按鈕控制代碼。

程式碼 (FormCreate)

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    // 圓形按鈕 (設計為正方形)
    HRGN hRgnR = CreateEllipticRgn(0, 0, RButton->Width, RButton->Height);
    SetWindowRgn(RButton->Handle, hRgnR, TRUE);

    // 三角形按鈕
    TrPoint[0].x = TButton->Width / 2; TrPoint[0].y = 0;
    TrPoint[1].x = 0;                  TrPoint[1].y = TButton->Height;
    TrPoint[2].x = TButton->Width;     TrPoint[2].y = TButton->Height;
    HRGN hRgnT = CreatePolygonRgn(TrPoint, 3, ALTERNATE);
    SetWindowRgn(TButton->Handle, hRgnT, TRUE);
}

標頭檔宣告

private:
    POINT TrPoint[3];

重要提醒

  • 區域座標以按鈕客戶區左上角為原點。
  • 圓形按鈕設計時必須為正方形。
  • 區域控制代碼一旦指派給按鈕,嚴禁再操作或刪除,否則程式崩潰。
  • 滑鼠游標僅在區域內生效。
  • 可搭配 TBitBtn/TSpeedButton 貼圖美化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved