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

    参考连接

  • 相关阅读:
    CentOS/RHEL 查看用户登陆信息
    PAM
    块存储
    ECS
    SQL 基础应用
    MySQL 基础管理
    MySQL 体系结构
    JSON对象
    设置dom节点属性的代码优化
    Ext框架下的元素拖动
  • 原文地址:https://www.cnblogs.com/HelloGreen/p/11531092.html
Copyright © 2011-2022 走看看