<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0076)http://www.cnblogs.com/jasenkin/archive/2012/08/26/draw_rectangle_round.html -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>C# GDI+绘制矩形圆角 - jasen.kin - 博客园</title>
<link type="text/css" rel="stylesheet" href="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/blog-common.css">
<link type="text/css" rel="stylesheet" href="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/63809.css">
<link title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/jasenkin/rss">
<link title="RSD" type="application/rsd+xml" rel="EditURI" href="http://www.cnblogs.com/jasenkin/rsd.xml">
<link type="application/wlwmanifest+xml" rel="wlwmanifest" href="http://www.cnblogs.com/jasenkin/wlwmanifest.xml">
<script type="text/javascript" src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/encoder.js"></script><script src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/jquery.js" type="text/javascript"></script>
<script type="text/javascript">var currentBlogApp = 'jasenkin', cb_enable_mathjax=false;</script>
<script src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/blog-common.js" type="text/javascript"></script>
</head>
<body>
<a name="top"></a>
<!--done-->
<div id="home">
<div id="header">
<div id="blogTitle">
<a id="lnkBlogLogo" href="http://www.cnblogs.com/jasenkin/"><img id="blogLogo" src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/logo.gif" alt="返回主页"></a>
<!--done-->
<h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/jasenkin/">JasenKin</a></h1>
<h2><p style="font-size:150%;color:blue;">志在苍穹,低调中的不平凡...</p></h2>
</div><!--end: blogTitle 博客的标题和副标题 -->
<div id="navigator">
<ul id="navList">
<li><a id="MyLinks1_HomeLink" class="menu" href="http://www.cnblogs.com/">博客园</a></li>
<li><a id="MyLinks1_MyHomeLink" class="menu" href="http://www.cnblogs.com/jasenkin/">首页</a></li>
<li><a href="http://news.cnblogs.com/">新闻</a></li>
<li><a id="MyLinks1_NewPostLink" class="menu" rel="nofollow" href="http://i.cnblogs.com/EditPosts.aspx?opt=1">新随笔</a></li>
<li><a id="MyLinks1_ContactLink" accesskey="9" class="menu" rel="nofollow" href="http://msg.cnblogs.com/send/jasen.kin">联系</a></li>
<li><a id="MyLinks1_Admin" class="menu" rel="nofollow" href="http://i.cnblogs.com/">管理</a></li>
<li><a id="MyLinks1_Syndication" class="menu" href="http://www.cnblogs.com/jasenkin/rss">订阅</a>
<a id="MyLinks1_XMLLink" class="aHeaderXML" href="http://www.cnblogs.com/jasenkin/rss"><img src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/xml.gif" alt="订阅"></a></li>
</ul>
<div class="blogStats">
<!--done-->
随笔- 114
文章- 0
评论- 751
</div><!--end: blogStats -->
</div><!--end: navigator 博客导航栏 -->
</div><!--end: header 头部 -->
<div id="main">
<div id="mainContent">
<div class="forFlow">
<div id="post_detail">
<!--done-->
<div id="topics">
<div class="post">
<h1 class="postTitle">
<a id="cb_post_title_url" class="postTitle2" href="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/C# GDI+绘制矩形圆角 - jasen.kin - 博客园.html">C# GDI+绘制矩形圆角</a>
</h1>
<div class="clear"></div>
<div class="postBody">
<div id="cnblogs_post_body"><span style="font-size: 18pt; color: rgb(255,102,0)">一、前言</span>
<p>本文主要介绍C# GDI+如何绘制矩行的圆角,其中涉及到如何使用位操作来处理组合的技巧。GDI+的本质在于,它能够替代开发人员实现与显示器及其它外部设备的交互。对于控件美化而言,需要达到自己期望的效果,GDI+必不可少。绘制后的圆角效果图如下:</p>
<p><img style="border-left-color: rgb(0,0,255); border-bottom-color: rgb(0,0,255); border-top-color: rgb(0,0,255); border-right-color: rgb(0,0,255)" height="452" alt="" src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/DrawRound.jpg" width="836" border="2"></p>
<p> </p>
<p><span style="font-size: 18pt; color: rgb(255,102,0)">二、圆角枚举与相应组合处理设计</span></p>
<p> 对于矩行而言,圆角分为左上角、右上角、左下角和右下角。组合情况就分为无圆角、一个圆角、二个圆角、三个圆角以及四个圆角。枚举需要满足该组合情况,没必要在枚举中将 全部组合列出,只需要通过位操作就能计算出属于哪种组合。枚举类设计如下:</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/copycode.gif" alt="复制代码"></a></span></div>
<div><span style="color: rgb(0,128,128)"> 1</span> [Flags]<br><span style="color: rgb(0,128,128)"> 2</span> <span style="color: rgb(0,0,255)">public</span> <span style="color: rgb(0,0,255)">enum</span> RoundStyle<br><span style="color: rgb(0,128,128)"> 3</span> { <br><span style="color: rgb(0,128,128)"> 4</span> None = <span style="color: rgb(128,0,128)">0</span>, <br><span style="color: rgb(0,128,128)"> 5</span> TopLeft = <span style="color: rgb(128,0,128)">1</span>,<br><span style="color: rgb(0,128,128)"> 6</span> TopRight = <span style="color: rgb(128,0,128)">2</span>,<br><span style="color: rgb(0,128,128)"> 7</span> BottomLeft = <span style="color: rgb(128,0,128)">4</span>,<br><span style="color: rgb(0,128,128)"> 8</span> BottomRight = <span style="color: rgb(128,0,128)">8</span> ,<br><span style="color: rgb(0,128,128)"> 9</span> All = TopLeft | TopRight | BottomLeft | BottomRight<br><span style="color: rgb(0,128,128)">10</span> }</div><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="./C# GDI+绘制矩形圆角 - jasen.kin - 博客园_files/copycode.gif" alt="复制代码"></a></span></div></div>
<p> </p>
<div>矩行的圆角所有组合情况如下:</div>
<div>RoundStyle.None </div>
<div>RoundStyle.All </div>
<div>RoundStyle.BottomLeft</div>
<div>RoundStyle.BottomRight</div>
<div>RoundStyle.TopLeft</div>
<div>
<p>RoundStyle.TopRight</p>
<p>RoundStyle.BottomRight | RoundStyle.BottomLeft<br>RoundStyle.BottomRight | RoundStyle.TopRight<br>RoundStyle.TopRight | RoundStyle.TopLeft<br>RoundStyle.BottomLeft | RoundStyle.TopLeft<br>RoundStyle.BottomRight | RoundStyle.TopLeft<br>RoundStyle.TopRight | RoundStyle.BottomLeft</p>
<p>RoundStyle.BottomLeft | RoundStyle.BottomRight | RoundStyle.TopLeft<br>RoundStyle.BottomLeft | RoundStyle.BottomRight | RoundStyle.TopRight<br>RoundStyle.BottomLeft | RoundStyle.TopLeft | RoundStyle.TopRight<br>RoundStyle.BottomRight | RoundStyle.TopRight | RoundStyle.TopLeft<br></p>
<p>对于每一种组合,必须提供相应的操作来执行路径计算,这主要是因为GraphicsPath的路径是有顺序的。因此所�