使用Graphic画圆角矩形和填充圆角矩形的方法
2011-01-21 14:17
465 查看
使用Graphic画圆角矩形和填充圆角矩形的方法
2008-01-05 21:57
2008-01-05 21:57
/* * Copyright (c) 2004-2007 D8HOME.CN * All rights reserved. * * http://www.d8home.cn/ * * This library is only free for any non commercial usage. In the case of * modifying and/or redistributing the code, it's obligate to retain * the original copyright notice. * */ using System; using System.Windows.Forms; using System.Drawing; namespace D8Drawing { /// <summary> /// RoundRect 的摘要说明。 /// </summary> public class RoundRect { /// <summary> /// 最大圆角半径 /// </summary> protected const int MaxRoundRadius = 3; /// <summary> /// 最小矩形边长,用于自动处理圆角大小 /// </summary> protected const int MinBorderLength = 20; /// <summary> /// 绘制一个圆角矩形. /// </summary> /// <param name="currentGraphicObject">当前屏幕的图形对象</param> /// <param name="lineColor">矩形线条的颜色</param> /// <param name="nLeft">矩形左上角X坐标</param> /// <param name="nTop">矩形左上角Y坐标</param> /// <param name="nRight">矩形右下角X坐标</param> /// <param name="nBottom">矩形右下角Y坐标</param> /// <param name="round">圆角的半径长度</param> public static void DrawRoundRect(System.Drawing.Graphics currentGraphicObject,Color lineColor,int nLeft,int nTop,int nRight,int nBottom,int round) { if(round > MaxRoundRadius) { round = MaxRoundRadius; } else if( round < 0) { round = 0; } if(Math.Abs(nRight - nLeft) < MinBorderLength && Math.Abs(nBottom - nTop) < MinBorderLength) { round = 1; } Point Polygon1 = new Point (nLeft+round,nTop); Point Polygon2 = new Point (nRight-round+1,nTop); Point Polygon3 = new Point (nLeft,nTop+round); Point Polygon4 = new Point (nRight+1,nTop+round); Point Polygon5 = new Point (nLeft,nBottom-round); Point Polygon6 = new Point (nRight+1,nBottom-round); Point Polygon7 = new Point (nLeft+round,nBottom+1); Point Polygon8 = new Point (nRight-round,nBottom+1); //四条主线(上下左右) currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon1.X,Polygon1.Y,Polygon2.X,Polygon2.Y); currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon7.X,Polygon7.Y,Polygon8.X,Polygon8.Y); currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon3.X,Polygon3.Y,Polygon5.X,Polygon5.Y); currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon4.X,Polygon4.Y,Polygon6.X,Polygon6.Y); //四个边角 currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon1.X,Polygon1.Y,Polygon3.X,Polygon3.Y); currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon2.X,Polygon2.Y,Polygon4.X,Polygon4.Y); currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon5.X,Polygon5.Y,Polygon7.X,Polygon7.Y); currentGraphicObject.DrawLine(new System.Drawing.Pen(lineColor),Polygon6.X,Polygon6.Y,Polygon8.X,Polygon8.Y); } /// <summary> /// 绘制一个圆角矩形. /// </summary> /// <param name="currentGraphicObject">当前屏幕的图形对象</param> /// <param name="lineColor">矩形线条的颜色</param> /// <param name="rect">要绘制的矩形对象</param> /// <param name="round">圆角的半径长度</param> public static void DrawRoundRect(System.Drawing.Graphics currentGraphicObject,Color lineColor,Rectangle rect,int round) { DrawRoundRect(currentGraphicObject,lineColor,rect.Left,rect.Top,rect.Right,rect.Bottom,round); } /// <summary> /// 绘制一个圆角矩形. /// </summary> /// <param name="currentGraphicObject">当前屏幕的图形对象</param> /// <param name="lineColor">矩形线条的颜色</param> /// <param name="rect">要绘制的矩形对象</param> public static void DrawRoundRect(System.Drawing.Graphics currentGraphicObject,Color lineColor,Rectangle rect) { DrawRoundRect(currentGraphicObject,lineColor,rect.Left,rect.Top,rect.Right,rect.Bottom,2); } /// <summary> /// 填充一个圆角矩形. /// </summary> /// <param name="currentGraphicObject">当前屏幕的图形对象</param> /// <param name="lineColor">矩形线条的颜色</param> /// <param name="nLeft">矩形左上角X坐标</param> /// <param name="nTop">矩形左上角Y坐标</param> /// <param name="nRight">矩形右下角X坐标</param> /// <param name="nBottom">矩形右下角Y坐标</param> /// <param name="round">圆角的半径长度</param> public static void FillRoundRect(System.Drawing.Graphics currentGraphicObject,Color fillColor,int nLeft,int nTop,int nRight,int nBottom,int round) { if(round > MaxRoundRadius) { round = MaxRoundRadius; } else if( round < 0) { round = 0; } if(Math.Abs(nRight - nLeft) < MinBorderLength && Math.Abs(nBottom - nTop) < MinBorderLength) { round = 1; } Point Polygon1 = new Point (nLeft+round,nTop); Point Polygon2 = new Point (nRight-round+1,nTop); Point Polygon3 = new Point (nLeft,nTop+round); Point Polygon4 = new Point (nRight+1,nTop+round); Point Polygon5 = new Point (nLeft,nBottom-round); Point Polygon6 = new Point (nRight+1,nBottom-round); Point Polygon7 = new Point (nLeft+round,nBottom+1); Point Polygon8 = new Point (nRight-round,nBottom+1); currentGraphicObject.FillPolygon(new System.Drawing.SolidBrush(fillColor),new Point[]{ Polygon1, Polygon3, Polygon5, Polygon7, Polygon8, Polygon6, Polygon4, Polygon2}); } /// <summary> /// 填充一个圆角矩形. /// </summary> /// <param name="currentGraphicObject">当前屏幕的图形对象</param> /// <param name="lineColor">矩形线条的颜色</param> /// <param name="rect">要填充的矩形</param> /// <param name="indentSize">填充区域针对矩形的缩进距离</param> /// <param name="round">圆角的半径长度</param> public static void FillRoundRect(System.Drawing.Graphics currentGraphicObject,Color lineColor,Rectangle rect,int indentSize,int round) { FillRoundRect(currentGraphicObject,lineColor,rect.Left+indentSize,rect.Top+indentSize,rect.Right-indentSize+1,rect.Bottom-indentSize+1,round); } /// <summary> /// 填充一个圆角矩形. /// </summary> /// <param name="currentGraphicObject">当前屏幕的图形对象</param> /// <param name="lineColor">矩形线条的颜色</param> /// <param name="rect">要填充的矩形</param> public static void FillRoundRect(System.Drawing.Graphics currentGraphicObject,Color lineColor,Rectangle rect) { FillRoundRect(currentGraphicObject,lineColor,rect,0,2); } } } |
相关文章推荐
- Android开发使用自定义View将圆角矩形绘制在Canvas上的方法
- 创建上圆角矩形的方法
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)
- 使用imageMagick 制作圆角矩形和图片加水印
- android 使用shape定义圆角矩形
- Android使用Drawable实现圆角矩形
- j2me学习笔记【13】——创建矩形框、圆角矩形以及填充颜色小例子
- Canvas---Canvas版画图、圆角矩形、圆形、矩形、图形填充、mvc模式重新整合代码版
- 使用layer-list绘制圆角矩形
- css+div制作圆角矩形的四种方法
- 使用RoundedBitmapDrawable生成圆角图片的方法
- 关于python使用cv画矩形并填充颜色同时填充文字
- C#画笔使用复合数组绘制单个矩形的方法
- 在使用echart时使用异步方法来填充数据
- Clipping Views安卓裁剪工具的使用,使用Android5.0新技术绘制圆角矩形,圆形控件。
- 2017/12/31Java基础学习——使用同一个值,填充整个数组のArrays.fill(a, number)方法
- Android 可以直接在控件中使用的圆角矩形
- drawRoundRect方法:绘制圆角矩形
- GPolyline(折线),GPolygon(填充)使用方法
- 使用线性渐变颜色填充矩形