toolstrip 去掉圆角_HZH_Controls/HZH_Controls/Controls/ToolStripRendererEx/GraphicsPathHelper.cs · 冰封一夏/H...

using System;

using System.Collections.Generic;

using System.Text;

using System.Drawing;

using System.Drawing.Drawing2D;

namespace HZH_Controls.Controls

{

public static class GraphicsPathHelper

{

///

/// 建立带有圆角样式的路径。

///

/// 用来建立路径的矩形。

/// 圆角的大小。

/// 圆角的样式。

/// 是否把矩形长宽减 1,以便画出边框。

/// 建立的路径。

public static GraphicsPath CreatePath(

Rectangle rect, int radius, RoundStyle style, bool correction)

{

GraphicsPath path = new GraphicsPath();

int radiusCorrection = correction ? 1 : 0;

switch (style)

{

case RoundStyle.None:

path.AddRectangle(rect);

break;

case RoundStyle.All:

path.AddArc(rect.X, rect.Y, radius, radius, 180, 90);

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Y,

radius,

radius,

270,

90);

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Bottom - radius - radiusCorrection,

radius,

radius, 0, 90);

path.AddArc(

rect.X,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

90,

90);

break;

case RoundStyle.Left:

path.AddArc(rect.X, rect.Y, radius, radius, 180, 90);

path.AddLine(

rect.Right - radiusCorrection, rect.Y,

rect.Right - radiusCorrection, rect.Bottom - radiusCorrection);

path.AddArc(

rect.X,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

90,

90);

break;

case RoundStyle.Right:

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Y,

radius,

radius,

270,

90);

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

0,

90);

path.AddLine(rect.X, rect.Bottom - radiusCorrection, rect.X, rect.Y);

break;

case RoundStyle.Top:

path.AddArc(rect.X, rect.Y, radius, radius, 180, 90);

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Y,

radius,

radius,

270,

90);

path.AddLine(

rect.Right - radiusCorrection, rect.Bottom - radiusCorrection,

rect.X, rect.Bottom - radiusCorrection);

break;

case RoundStyle.Bottom:

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

0,

90);

path.AddArc(

rect.X,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

90,

90);

path.AddLine(rect.X, rect.Y, rect.Right - radiusCorrection, rect.Y);

break;

case RoundStyle.BottomLeft:

path.AddArc(

rect.X,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

90,

90);

path.AddLine(rect.X, rect.Y, rect.Right - radiusCorrection, rect.Y);

path.AddLine(

rect.Right - radiusCorrection,

rect.Y,

rect.Right - radiusCorrection,

rect.Bottom - radiusCorrection);

break;

case RoundStyle.BottomRight:

path.AddArc(

rect.Right - radius - radiusCorrection,

rect.Bottom - radius - radiusCorrection,

radius,

radius,

0,

90);

path.AddLine(rect.X, rect.Bottom - radiusCorrection, rect.X, rect.Y);

path.AddLine(rect.X, rect.Y, rect.Right - radiusCorrection, rect.Y);

break;

}

path.CloseFigure();

return path;

}

}

}

一键复制

编辑

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值