最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中Region、Exclude的用法小結(jié)

 更新時(shí)間:2025年11月27日 09:11:11   作者:wangnaisheng  
本文主要介紹了C#中Region、Exclude的用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在 C# 中,RegionExclude 是與圖形編程相關(guān)的概念,通常在使用 System.Drawing 命名空間進(jìn)行 GDI+ 繪圖時(shí)出現(xiàn)。它們主要用于定義和操作二維空間中的區(qū)域(幾何區(qū)域),常用于窗體裁剪、控件重繪、圖形繪制優(yōu)化等場(chǎng)景。

一、Region的用法

Region 類(位于 System.Drawing 命名空間)表示一個(gè)屏幕上的區(qū)域,可以是矩形、橢圓、多邊形,甚至是復(fù)雜組合形狀。

1. 創(chuàng)建 Region 的方式:

using System.Drawing;

// 1. 從矩形創(chuàng)建
Rectangle rect = new Rectangle(10, 10, 100, 100);
Region region1 = new Region(rect);

// 2. 從橢圓創(chuàng)建
GraphicsPath path = new GraphicsPath();
path.AddEllipse(20, 20, 80, 80);
Region region2 = new Region(path);

// 3. 從 GraphicsPath 創(chuàng)建復(fù)雜形狀
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:補(bǔ)集
  • GetHrgn:獲取 GDI 句柄(用于 Win32 API)

二、Exclude的用法

ExcludeRegion 類的一個(gè)方法,用于從當(dāng)前區(qū)域中移除另一個(gè)區(qū)域,即執(zhí)行“差集”操作。

方法簽名:

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

示例:

// 創(chuàng)建一個(gè)大矩形區(qū)域
Region bigRegion = new Region(new Rectangle(0, 0, 200, 200));

// 創(chuàng)建一個(gè)小矩形區(qū)域(要排除的部分)
Rectangle hole = new Rectangle(50, 50, 100, 100);

// 從小區(qū)域中“挖掉”一個(gè)洞
bigRegion.Exclude(hole);

// 現(xiàn)在 bigRegion 是一個(gè)外框?yàn)?200x200,中間有 100x100 空洞的區(qū)域

實(shí)際應(yīng)用場(chǎng)景:

創(chuàng)建非矩形窗體的透明區(qū)域

這樣窗體就變成了一個(gè)“框”,中間是透明的(不可點(diǎn)擊、不繪制)。

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

繪制時(shí)排除某些區(qū)域不重繪

Graphics g = this.CreateGraphics();
Region updateRegion = g.Clip; // 獲取當(dāng)前裁剪區(qū)域
updateRegion.Exclude(someControl.Bounds); // 排除某個(gè)控件區(qū)域
g.Clip = updateRegion;
// 然后只繪制除該控件外的區(qū)域

三、注意事項(xiàng)

  • Region 是 GDI+ 資源,使用后應(yīng)釋放:
  • 在 WinForms 中,Control.Region 屬性可以設(shè)置控件的可見/可點(diǎn)擊區(qū)域。
  • Exclude 操作是破壞性操作,會(huì)修改原 Region 對(duì)象,而不是返回新對(duì)象。
  • 對(duì)于高性能圖形應(yīng)用,頻繁創(chuàng)建/銷毀 Region 可能影響性能,需注意優(yōu)化。

四、總結(jié)

概念說明
Region表示一個(gè)二維區(qū)域,可用于裁剪、繪圖、窗體形狀控制等
Exclude從當(dāng)前 Region 中移除指定區(qū)域,實(shí)現(xiàn)“差集”效果,常用于“挖洞”或排除繪制區(qū)域

這些功能在自定義控件、不規(guī)則窗體、動(dòng)畫特效等場(chǎng)景中非常有用。

到此這篇關(guān)于C#中Region、Exclude的用法小結(jié)的文章就介紹到這了,更多相關(guān)C# Region、Exclude內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C#中XmlWriter寫入Xml的深入分析

    基于C#中XmlWriter寫入Xml的深入分析

    本篇文章是對(duì)C#中XmlWriter寫入Xml進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#使用DevExpress中的XtraCharts控件實(shí)現(xiàn)圖表

    C#使用DevExpress中的XtraCharts控件實(shí)現(xiàn)圖表

    這篇文章介紹了C#使用DevExpress中的XtraCharts控件實(shí)現(xiàn)圖表的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#利用FileSystemWatcher實(shí)時(shí)監(jiān)控文件的增加,修改,重命名和刪除

    C#利用FileSystemWatcher實(shí)時(shí)監(jiān)控文件的增加,修改,重命名和刪除

    好多時(shí)候,我們都需要知道某些目錄下的文件什么時(shí)候被修改、刪除過等。本文將利用FileSystemWatcher實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的增加,修改,重命名和刪除,感興趣的可以了解一下
    2022-08-08
  • C#利用原圖和水印圖的重疊簡(jiǎn)單實(shí)現(xiàn)水印的方法

    C#利用原圖和水印圖的重疊簡(jiǎn)單實(shí)現(xiàn)水印的方法

    這篇文章主要介紹了C#利用原圖和水印圖的重疊簡(jiǎn)單實(shí)現(xiàn)水印的方法,實(shí)例演示了完整的水印操作類實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-04-04
  • C# VB 實(shí)現(xiàn)10進(jìn)制 16進(jìn)制之間互相轉(zhuǎn)換

    C# VB 實(shí)現(xiàn)10進(jìn)制 16進(jìn)制之間互相轉(zhuǎn)換

    如何將10進(jìn)制轉(zhuǎn)成16進(jìn)制,又如何將16進(jìn)制數(shù)轉(zhuǎn)成10進(jìn)制,本文將介紹C#和VB實(shí)現(xiàn)代碼,需要了解的朋友可以參考下
    2012-11-11
  • 基于C# WinForms開發(fā)的Windows系統(tǒng)監(jiān)控工具

    基于C# WinForms開發(fā)的Windows系統(tǒng)監(jiān)控工具

    最近開發(fā)了一個(gè)輕量級(jí)的 Windows 系統(tǒng)監(jiān)控工具,可以實(shí)時(shí)監(jiān)控 CPU、內(nèi)存、GPU、溫度、網(wǎng)絡(luò)流量等硬件信息,并通過曲線圖表直觀展示,本文分享一下開發(fā)過程中的核心技術(shù)點(diǎn)和關(guān)鍵代碼實(shí)現(xiàn),需要的朋友可以參考下
    2025-12-12
  • C#使用Socket實(shí)現(xiàn)心跳的方法示例

    C#使用Socket實(shí)現(xiàn)心跳的方法示例

    這篇文章主要介紹了C#使用Socket實(shí)現(xiàn)心跳的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C#操作word的方法示例

    C#操作word的方法示例

    這篇文章主要介紹了C#操作word的方法,結(jié)合實(shí)例形式分析了C#針對(duì)word文檔的讀取、寫入、保存等相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C#創(chuàng)建及訪問網(wǎng)絡(luò)硬盤的實(shí)現(xiàn)

    C#創(chuàng)建及訪問網(wǎng)絡(luò)硬盤的實(shí)現(xiàn)

    本文主要介紹了C#創(chuàng)建及訪問網(wǎng)絡(luò)硬盤的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C#登入實(shí)例

    C#登入實(shí)例

    本篇文章通過截圖的方式向大家展示C#程序登陸實(shí)現(xiàn)的全過程,利用了C#三層架構(gòu)的編寫方法,希望對(duì)大家今后編寫代碼有所幫助
    2016-11-11

最新評(píng)論

洮南市| 旬阳县| 分宜县| 雷波县| 宁城县| 杭锦后旗| 永安市| 高尔夫| 南丰县| 获嘉县| 禄劝| 苗栗市| 威信县| 德庆县| 镇安县| 宁城县| 寿光市| 潼南县| 青浦区| 三门县| 改则县| 涟水县| 泗洪县| 凭祥市| 利川市| 墨竹工卡县| 彩票| 南涧| 西青区| 正宁县| 易门县| 五莲县| 美姑县| 扶沟县| 阿巴嘎旗| 灵丘县| 韩城市| 蕲春县| 额尔古纳市| 华宁县| 山东|