QQ登录

只需一步,快速开始

搜索
查看: 169|回复: 0

[学习笔记] 《Windows SDK》030 处理矩形

[复制链接]
最佳答案
22 
累计签到:123 天
连续签到:24 天
发表于 2017-8-2 14:16:43 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 BngThea 于 2017-8-2 15:40 编辑

一 核心知识点
* 绘制矩形
1 用 Polyline 函数可以用连线的方式得到一个矩形
2 用 Rectangle 函数可以完成矩形的边框绘制,同时自动填充其内部
3 将画刷设置为 NULL_BRUSH 或 HOLLOW_BRUSH 再调用 Rectangle 函数可以不填充矩形内部

* 处理矩形
1 为什么需要处理?因为窗口中的对象基本都处在一个矩形范围之类
2 Windows 提供了许多处理矩形操作的API函数,包括填充,移动,缩放等


二 新API函数
* FillRect(hdc, &rect, hBrush)
该函数用指定画刷填充矩形内部

第一个参数:指定的环境句柄
第二个参数:待填充的矩形
第三个参数:指定的画刷

该函数填充左上边框,却不填充右下边框
该函数的第三个参数可以是一个标准的系统颜色值,比如(HBRUSH)(COLOR_WINDOW + 1)

* FrameRect(hdc, &rect, hBrush)
该函数用指定画刷来绘制一个矩形边框

各参数含义同FillRect

该函数绘制的矩形边框宽度始终为一个逻辑单位大小

* InvertRect(hdc, &rect)
该函数将指定的矩形内部颜色反转

第一个参数:指定的环境句柄
第二个参数:待反转的矩形

* SetRect(&rect, 100, 100, 200, 200)
该函数设置指定矩形的大小

第一个参数: 指定的矩形
第二三个参数: 矩形左上角端点xy坐标
第四五个参数: 矩形右下角端点xy坐标

* OffsetRect(&rect, -50, -50)
该函数将指定矩形进行移动

第一个参数: 待移动矩形
第二三个参数:指定的xy方向的偏移量,负数表示左上,正数为右下

* InflateRect(&rect, 100, 100)
该函数用于放大和缩小指定的矩形

第一个参数: 待移动矩形
第二三个参数:指定的xy方向的缩放,负数表示缩小,正数为放大

该函数最终的缩放量是传入的参数的两倍,因为缩放时正负轴同时进行的

* SetRectEmpty(&rect) 和 IsRectEmpty(&rect)
这两个函数分别将指定矩形设置为空或判断指定矩形是否为空

* CopyRect(&rectA, &rectB)
该函数将矩形B的坐标拷贝到A中

* IntersectRect(&rectC, &rectA, &rectB)
该函数将矩形A和矩形B的交集形成的矩形赋给矩形C

* UnionRect(&rectC, &rectA, &rectB)
该函数生成能够同时覆盖矩形A和矩形B的最小矩形C

* PtInRect(&rect, pt)
该函数判断一个点pt是否落在指定的矩形中

第一个参数: 指定的矩形
第二个参数: 一个点的对象

该函数对边框的处理:如果pt落在左上边框上,则返回TRUE,而落在右下边框则返回FALSE
该函数可以轻松实现鼠标点击按钮的准确响应

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-10-17 15:40 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表