windows如何實現圓角窗口


背景

windows做繪制時,為了美觀,常常將一些圖片或者窗口的四個角做成圓角。例如QQ窗口:

圓角的實現方案總結

  • 其實總結起來非常的簡單,就兩個步驟:
  1. 計算窗口的邊界剪切域
  2. 通過windows API SetWindowRgn設置該窗口的剪切域
  • 其實原理就是,設置好邊界剪切域之后,windows會將邊界剪切域中的像素都去掉。

步驟詳解

1. 計算窗口的邊界剪切域

  • MFC中可利用CRgn
  • 使用CreateRectRgn創建邊界剪切域
    • 可用CreateRoundRectRgn創建圓角矩形區域
    • CreateEllipticRgn創建橢圓形剪切域
    • CreatePolygonRgn創建多邊形剪切域
  • 使用CombineRgn來修改邊界剪切域,常用的位操作如下:
    • RGN_AND
    • RGN_OR
    • RGN_XOR
    • RGN_DIFF
    • RGN_COPY

2. 設置窗口的邊界剪切域

  • 使用SetWindowRgnAPI設置窗口的剪切域

    • 需傳入參數:邊界剪切域的句柄HRGN
    • 需傳入參數:是否觸發重繪
  • 上述兩步驟,可以簡單的理解為:

    1. 給windows窗口設置要被“剪掉”的區域
    2. 以后windows系統域每次重繪的時候,都會把這部分區域“剪掉”,這樣就實現了圓角或者其他豐富形狀的窗口

參考連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM