在 C# 中,RegionExclude 是与图形编程相关的概念,通常在使用 System.Drawing 命名空间进行 GDI+ 绘图时出现。它们主要用于定义和操作二维空间中的区域(几何区域),常用于窗体裁剪、控件重绘、图形绘制优化等场景。

一、Region 的用法

Region 类(位于 System.Drawing 命名空间)表示一个屏幕上的区域,可以是矩形、椭圆、多边形,甚至是复杂组合形状。

1. 创建 Region 的方式:

using System.Drawing;// 1. 从矩形创建
Rectangle rect = new Rectangle(10, 10, 100, 100);
Region region1 = new Region(rect);// 2. 从椭圆创建
GraphicsPath path = new GraphicsPath();
path.AddEllipse(20, 20, 80, 80);
Region region2 = new Region(path);// 3. 从 GraphicsPath 创建复杂形状
GraphicsPath complexPath = new GraphicsPath();
complexPath.AddPolygon(new Point[] {new Point(0, 0),new Point(50, 100),new Point(100, 0)
});
Region region3 = new Region(complexPath);

2. Region 的常用操作

  • Intersect:交集
  • Union:并集
  • Xor:异或
  • Exclude:排除(见下文)
  • Complement:补集
  • GetHrgn:获取 GDI 句柄(用于 Win32 API)

二、Exclude 的用法

ExcludeRegion 类的一个方法,用于从当前区域中移除另一个区域,即执行“差集”操作。

方法签名:

public void Exclude(Rectangle rect);
public void Exclude(RectangleF rect);
public void Exclude(Region region);

示例:

// 创建一个大矩形区域
Region bigRegion = new Region(new Rectangle(0, 0, 200, 200));// 创建一个小矩形区域(要排除的部分)
Rectangle hole = new Rectangle(50, 50, 100, 100);// 从小区域中“挖掉”一个洞
bigRegion.Exclude(hole);// 现在 bigRegion 是一个外框为 200x200,中间有 100x100 空洞的区域

实际应用场景:

创建非矩形窗体的透明区域

这样窗体就变成了一个“框”,中间是透明的(不可点击、不绘制)。

this.Region = new Region(new Rectangle(0, 0, 300, 300));
this.Region.Exclude(new Rectangle(50, 50, 200, 200)); // 中间挖空

绘制时排除某些区域不重绘

Graphics g = this.CreateGraphics();
Region updateRegion = g.Clip; // 获取当前裁剪区域
updateRegion.Exclude(someControl.Bounds); // 排除某个控件区域
g.Clip = updateRegion;
// 然后只绘制除该控件外的区域

三、注意事项

  • Region 是 GDI+ 资源,使用后应释放
  • 在 WinForms 中,Control.Region 属性可以设置控件的可见/可点击区域。
  • Exclude 操作是破坏性操作,会修改原 Region 对象,而不是返回新对象。
  • 对于高性能图形应用,频繁创建/销毁 Region 可能影响性能,需注意优化。

四、总结

概念说明
Region表示一个二维区域,可用于裁剪、绘图、窗体形状控制等
Exclude从当前 Region 中移除指定区域,实现“差集”效果,常用于“挖洞”或排除绘制区域

这些功能在自定义控件、不规则窗体、动画特效等场景中非常有用。

五、扩展

【C#】GraphicsPath的用法文章浏览阅读449次,点赞3次,收藏6次。【C#】GraphicsPath的用法_c# graphicspath 对象说明 https://blog.csdn.net/wangnaisheng/article/details/149226810?spm=1011.2415.3001.5331【C#】 使用GDI+获取两个多边形区域相交、非相交区域文章浏览阅读753次。【C#】 使用GDI+获取两个多边形区域相交、非相交区域_c# 图形相交区域 https://blog.csdn.net/wangnaisheng/article/details/140527315?spm=1011.2415.3001.5331

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93238.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93238.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93238.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习 - Kaggle项目实践(3)Digit Recognizer 手写数字识别

Digit Recognizer | Kaggle 题面 Digit Recognizer-CNN | Kaggle 下面代码的kaggle版本 使用CNN进行手写数字识别 学习到了网络搭建手法学习率退火数据增广 提高训练效果。 使用混淆矩阵 以及对分类出错概率最大的例子单独拎出来分析。 最终以99.546%正确率 排在 86/1035 …

新手如何高效运营亚马逊跨境电商:从传统SP广告到DeepBI智能策略

"为什么我的广告点击量很高但订单转化率却很低?""如何避免新品期广告预算被大词消耗殆尽?""为什么手动调整关键词和出价总是慢市场半拍?""竞品ASIN投放到底该怎么做才有效?""有没有…

【论文阅读 | CVPR 2024 | UniRGB-IR:通过适配器调优实现可见光-红外语义任务的统一框架】

论文阅读 | CVPR 2024 | UniRGB-IR:通过适配器调优实现可见光-红外语义任务的统一框架​1&&2. 摘要&&引言3.方法3.1 整体架构3.2 多模态特征池3.3 补充特征注入器3.4 适配器调优范式4 实验4.1 RGB-IR 目标检测4.2 RGB-IR 语义分割4.3 RGB-IR 显著目…

Hyperf 百度翻译接口实现方案

保留 HTML/XML 标签结构,仅翻译文本内容,避免破坏富文本格式。采用「HTML 解析 → 文本提取 → 批量翻译 → 回填」的流程。百度翻译集成方案:富文本内容翻译系统 HTML 解析 百度翻译 API 集成 文件结构 app/ ├── Controller/ │ └──…

字节跳动 VeOmni 框架开源:统一多模态训练效率飞跃!

资料来源:火山引擎-开发者社区 多模态时代的训练痛点,终于有了“特效药” 当大模型从单一语言向文本 图像 视频的多模态进化时,算法工程师们的训练流程却陷入了 “碎片化困境”: 当业务要同时迭代 DiT、LLM 与 VLM时&#xff0…

配置docker pull走http代理

之前写了一篇自建Docker镜像加速器服务的博客,需要用到境外服务器作为代理,但是一般可能没有境外服务器,只有http代理,所以如果本地使用想走代理可以用以下方式 临时生效(只对当前终端有效) 设置环境变量…

OpenAI 开源模型 gpt-oss 本地部署详细教程

OpenAI 最近发布了其首个开源的开放权重模型gpt-oss,这在AI圈引起了巨大的轰动。对于广大开发者和AI爱好者来说,这意味着我们终于可以在自己的机器上,完全本地化地运行和探索这款强大的模型了。 本教程将一步一步指导你如何在Windows和Linux…

力扣-5.最长回文子串

题目链接 5.最长回文子串 class Solution {public String longestPalindrome(String s) {boolean[][] dp new boolean[s.length()][s.length()];int maxLen 0;String str s.substring(0, 1);for (int i 0; i < s.length(); i) {dp[i][i] true;}for (int len 2; len …

Apache Ignite超时管理核心组件解析

这是一个非常关键且设计精巧的 定时任务与超时管理组件 —— GridTimeoutProcessor&#xff0c;它是 Apache Ignite 内核中负责 统一调度和处理所有异步超时事件的核心模块。&#x1f3af; 一、核心职责统一管理所有需要“在某个时间点触发”的任务或超时逻辑。它相当于 Ignite…

DAY 42 Grad-CAM与Hook函数

知识点回顾回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例# 定义一个存储梯度的列表 conv_gradients []# 定义反向钩子函数 def backward_hook(module, grad_input, grad_output):# 模块&#xff1a;当前应用钩子的模块# grad_input&#xff1a;模块输入的梯度…

基于 NVIDIA 生态的 Dynamo 风格分布式 LLM 推理架构

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

《吃透 C++ 类和对象(中):拷贝构造函数与赋值运算符重载深度解析》

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践

那天把项目部署到测试环境&#xff0c;结果依赖冲突把服务拉崩了——本地能跑&#xff0c;线上不能跑。折腾半天才发现&#xff1a;我和同事用的不是同一套 site-packages&#xff0c;版本差异导致运行时异常。那一刻我彻底明白&#xff1a;虚拟环境不是可选项&#xff0c;它是…

[ 数据结构 ] 时间和空间复杂度

1.算法效率算法效率分析分为两种 : ①时间效率, ②空间效率 时间效率即为 时间复杂度 , 时间复杂度主要衡量一个算法的运行速度空间效率即为 空间复杂度 , 空间复杂度主要衡量一个算法所需要的额外空间2.时间复杂度2.1 时间复杂度的概念定义 : 再计算机科学中 , 算法的时间复杂…

一,设计模式-单例模式

目的设计单例模式的目的是为了解决两个问题&#xff1a;保证一个类只有一个实例这种需求是需要控制某些资源的共享权限&#xff0c;比如文件资源、数据库资源。为该实例提供一个全局访问节点相较于通过全局变量保存重要的共享对象&#xff0c;通过一个封装的类对象&#xff0c;…

AIStarter修复macOS 15兼容问题:跨平台AI项目管理新体验

AIStarter是全网唯一支持Windows、Mac和Linux的AI管理平台&#xff0c;为开发者提供便捷的AI项目管理体验。近期&#xff0c;熊哥在视频中分享了针对macOS 15系统无法打开AIStarter的修复方案&#xff0c;最新版已完美兼容。本文基于视频内容&#xff0c;详解修复细节与使用技巧…

LabVIEW 纺织检测数据传递

基于 LabVIEW 实现纺织检测系统中上位机&#xff08;PC 机&#xff09;与下位机&#xff08;单片机&#xff09;的串口数据传递&#xff0c;成功应用于煮茧机温度测量系统。通过采用特定硬件架构与软件设计&#xff0c;实现了温度数据的高效采集、传输与分析&#xff0c;操作简…

ECCV-2018《Variational Wasserstein Clustering》

核心思想 该论文提出了一个基于最优传输(optimal transportation) 理论的新型聚类方法&#xff0c;称为变分Wasserstein聚类(Variational Wasserstein Clustering, VWC)。其核心思想有三点&#xff1a;建立最优传输与k-means聚类的联系&#xff1a;作者指出k-means聚类问题本质…

部署 Docker 应用详解(MySQL + Tomcat + Nginx + Redis)

文章目录一、MySQL二、Tomcat三、Nginx四、Redis一、MySQL 搜索 MySQL 镜像下载 MySQL 镜像创建 MySQL 容器 docker run -i -t/d -p 3307:3306 --namec_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 m…

VR全景导览在大型活动中的应用实践:优化观众体验与现场管理

大型演出赛事往往吸引海量观众&#xff0c;但复杂的场馆环境常带来诸多困扰&#xff1a;如何快速找到座位看台区域&#xff1f;停车位如何规划&#xff1f;附近公交地铁站在哪&#xff1f;这些痛点直接影响观众体验与现场秩序。VR全景技术为解决这些问题提供了有效方案。通过在…