zoukankan      html  css  js  c++  java
  • 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系统域每次重绘的时候,都会把这部分区域“剪掉”,这样就实现了圆角或者其他丰富形状的窗口

    参考连接

  • 相关阅读:
    模板
    kuangbin带你飞
    BZOJ开荒记
    模板
    洛谷
    模板
    [蓝桥杯][2013年第四届真题]危险系数
    数位DP入门题
    备战2019蓝桥杯
    常用的数学符号
  • 原文地址:https://www.cnblogs.com/HelloGreen/p/11531092.html
Copyright © 2011-2022 走看看