亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pieshape.cs

?? 本程序演示了在ASP.NET中使用XML/XSLT
?? CS
字號:
/*
 
	C#發現之旅系列教程配套演示代碼
	
	本代碼僅供學習和參考使用

	編制 袁永福 2008-5-15 
	
	MSN			yyf9989@hotmail.com
	
	QQ			28348092
	
	作者博客	http://xdesigner.cnblogs.com/
	
	使用者請作者的尊重知識產權。

*/
using System;
using System.Drawing ;
using System.Drawing.Drawing2D ;
using System.Xml ;

namespace cs_discovery
{
	/// <summary>
	/// 單個餅圖形狀項目
	/// </summary>
	/// <remarks>該類型是PieShape列表的成員類型</remarks>
	[System.Serializable()]
	public class PieShapeItem
	{
		private double dblValue = 0 ;
		/// <summary>
		/// 數值
		/// </summary>
		public double Value
		{
			get{ return dblValue ;}
			set{ dblValue = value;}
		}

		private string strText = null;
		/// <summary>
		/// 對象文本
		/// </summary>
		public string Text
		{
			get{ return strText ;}
			set{ strText = value;}
		}

		private string strLink = null;
		/// <summary>
		/// 項目鏈接地址
		/// </summary>
		public string Link
		{
			get{ return strLink ;}
			set{ strLink = value;}
		}

		private Color intColor = Color.Black ;
		/// <summary>
		/// 項目顏色
		/// </summary>
		public Color Color
		{
			get{ return intColor ;}
			set{ intColor = value;}
		}

		/// <summary>
		/// 開始角度
		/// </summary>
		internal float StartAngle = 0 ;
		/// <summary>
		/// 結束角度
		/// </summary>
		internal float EndAngle = 0 ;
	}//public class PieShapeItem

	/// <summary>
	/// 平面餅圖形狀對象
	/// </summary>
	/// <remarks>
	/// 本對象是元素類型為PieShapeItem的列表,并能繪制一個橢圓形的平面餅圖
	/// 編制 袁永福 2008-1-10
	/// </remarks>
	[System.Serializable()]
	public class PieShape : System.Collections.CollectionBase
	{
		/// <summary>
		/// 初始化對象
		/// </summary>
		public PieShape( )
		{
		}

		#region 定義對象坐標位置 **********************************************

		private int intLeft = 0 ;
		/// <summary>
		/// 對象左端位置
		/// </summary>
		public int Left
		{
			get{ return intLeft ;}
			set{ intLeft = value;}
		}

		private int intTop = 0 ;
		/// <summary>
		/// 對象頂端位置
		/// </summary>
		public int Top
		{
			get{ return intTop ;}
			set{ intTop = value;}
		}
		private int intWidth = 300 ;
		/// <summary>
		/// 對象寬度
		/// </summary>
		public int Width
		{
			get{ return intWidth ;}
			set{ intWidth = value;}
		}

		private int intHeight = 300 ;
		/// <summary>
		/// 對象高度
		/// </summary>
		public int Height
		{
			get{ return intHeight ;}
			set{ intHeight = value;}
		}
		/// <summary>
		/// 對象邊界
		/// </summary>
		public Rectangle Bounds
		{
			get
			{
				return new Rectangle(
					intLeft ,
					intTop , 
					intWidth , 
					intHeight );
			}
			set
			{
				intLeft = value.Left ;
				intTop = value.Top ;
				intWidth = value.Width ;
				intHeight = value.Height ;
			}
		}

		#endregion

		#region 管理餅圖項目的代碼群 ******************************************

		/// <summary>
		/// 返回指定序號處的項目
		/// </summary>
		public PieShapeItem this[ int index ]
		{
			get{ return ( PieShapeItem) this.List[ index ] ;}
		}

		/// <summary>
		/// 添加一個項目
		/// </summary>
		/// <param name="item">項目對象</param>
		/// <returns>新加的項目在列表中的序號</returns>
		public int Add( PieShapeItem item )
		{
			return this.List.Add( item );
		}

		/// <summary>
		/// 添加一個項目
		/// </summary>
		/// <param name="Value">項目數值</param>
		/// <param name="Text">項目文本</param>
		/// <param name="Link">項目鏈接地址</param>
		/// <param name="Color">項目顏色值</param>
		/// <returns>新增項目在列表中的序號</returns>
		public int Add( double Value , string Text , string Link , Color Color )
		{
			PieShapeItem item = new PieShapeItem();
			item.Value = Value ;
			item.Text = Text ;
			item.Link = Link ;
			item.Color = Color ;
			return this.List.Add( item );
		}

		/// <summary>
		/// 添加一個項目
		/// </summary>
		/// <param name="Value">項目數值</param>
		/// <param name="Text">項目文本</param>
		/// <param name="Link">項目鏈接地址</param>
		/// <returns>新增項目在列表中的序號</returns>
		public int Add( double Value , string Text , string Link )
		{
			PieShapeItem item = new PieShapeItem();
			item.Value = Value ;
			item.Text = Text ;
			item.Link = Link ;
			item.Color = StdColors[ this.Count % StdColors.Length ] ;
			return this.List.Add( item );
		}
 
		/// <summary>
		/// 刪除一個項目
		/// </summary>
		/// <param name="item">要刪除的指定的餅圖項目</param>
		public void Remove( PieShapeItem item )
		{
			this.List.Remove( item );
		}

		#endregion

		#region 繪制圖形相關 **************************************************

		/// <summary>
		/// 刷新對象狀態
		/// </summary>
		/// <remarks>
		/// 本函數中反向遍歷所有的餅圖項目,
		/// 計算各個餅圖項目的起始和終止角度</remarks>
		public void RefreshState()
		{
			double TotalValue = 0 ;
			foreach( PieShapeItem item in this )
			{
				TotalValue += item.Value ;
			}
			float AngleCount = 0 ;
			for( int iCount = this.Count - 1 ; iCount >= 0 ; iCount -- )
			{
				PieShapeItem item = this[ iCount ] ;
				float angle = ( float ) ( 360.0 * item.Value / TotalValue ) ;
				item.StartAngle = ( float ) Math.Round( AngleCount , 3 ) ;
				item.EndAngle = ( float ) Math.Round( AngleCount + angle , 3 ) ;
				AngleCount += angle ;
				item.StartAngle = ( float ) Math.Round( FixAngle( item.StartAngle ) , 3 );
				item.EndAngle = ( float ) Math.Round( FixAngle( item.EndAngle ) , 3 ) ;
			}
		}

		/// <summary>
		/// 創建一個包含對象圖形位圖對象
		/// </summary>
		/// <returns>創建的位圖對象</returns>
		public Bitmap CreateBitmap( )
		{
			Bitmap bmp = new Bitmap( intWidth + 1 , intHeight + 1 ) ;
			using( Graphics g = Graphics.FromImage( bmp ))
			{
				g.Clear( Color.White );
				g.TranslateTransform( intLeft , intTop );
				g.SmoothingMode = SmoothingMode.HighQuality ;
				Draw( g , this.Bounds );
			}
			return bmp ;
		}

		/// <summary>
		/// 繪制餅圖圖形
		/// </summary>
		/// <param name="g">圖形繪制對象</param>
		/// <param name="ClipRectangle">剪切矩形</param>
		public void Draw( Graphics g , Rectangle ClipRectangle )
		{
			foreach( PieShapeItem item in this )
			{
				using( GraphicsPath path = CreatePath( item ))
				{
					using( SolidBrush b = new SolidBrush( item.Color ))
					{
						g.FillPath( b , path );
						g.DrawPath( Pens.Black , path );
					}
				}
			}
		}
		 
		/// <summary>
		/// 為一個餅圖項目創建路徑對象
		/// </summary>
		/// <param name="item">餅圖項目</param>
		/// <returns>創建的路徑對象</returns>
		public GraphicsPath CreatePath( PieShapeItem item )
		{
			GraphicsPath path = new GraphicsPath();
			path.AddPie( 
				intLeft ,
				intTop , 
				intWidth ,
				intHeight , 
				item.StartAngle , 
				item.EndAngle - item.StartAngle );
			return path ;
		}

		#endregion

		/// <summary>
		/// 創建用于顯示餅圖圖片和超鏈接的HTML代碼字符串
		/// </summary>
		/// <param name="imgsrc">圖片地址</param>
		/// <returns>創建的HTML字符串</returns>
		/// <remarks>
		/// 此處沒有簡單拼湊HTML字符串,而是利用XML和HTML的相似性
		/// 使用一個XmlTextWriter來生成HTML字符串。
		/// </remarks>
		public string GetHtmlString( string imgsrc )
		{
			if( this.Count == 0 )
				return "";
			// 生成唯一的 map 元素名稱
			string name = System.Guid.NewGuid().ToString("N");
			// 生成 XmlTextWriter 對象
			System.IO.StringWriter myStr = new System.IO.StringWriter();
			System.Xml.XmlTextWriter writer = new XmlTextWriter( myStr );
			writer.IndentChar = ' ' ;
			writer.Indentation = 3 ;
			writer.Formatting = System.Xml.Formatting.Indented ;
			// 開始輸出HTML
			writer.WriteStartDocument();
			// 輸出圖片元素
			writer.WriteRaw("\r\n<img src='" + imgsrc + "' usemap='#" + name + "' border='0'/>");
			// 輸出 map 元素
			writer.WriteStartElement("map");
			writer.WriteAttributeString("name" , name );
			foreach( PieShapeItem item in this )
			{
				// 輸出超鏈接區域
				Point[] ps = this.GetPoints( item );
				writer.WriteStartElement("area");
				writer.WriteAttributeString("shape" , "poly");
				writer.WriteStartAttribute("coords" , null );
				for( int iCount = 0 ; iCount < ps.Length ; iCount ++ )
				{
					writer.WriteString( ps[ iCount ].X.ToString() );
					writer.WriteString("," );
					writer.WriteString( ps[ iCount ].Y.ToString() );
					writer.WriteString("," );
				}
				writer.WriteEndAttribute();
				if( item.Link != null && item.Link.Length > 0 )
				{
					writer.WriteAttributeString("href" , item.Link );
				}
				writer.WriteAttributeString("title" , item.Text );
				writer.WriteEndElement();
			}
			writer.WriteEndElement();
			writer.WriteEndDocument();
			writer.Close();
			string html = myStr.ToString();
			// 修正輸出的HTML字符串
			int index = html.LastIndexOf("?>");
			if( index > 0 )
			{
				html = html.Substring( index + 2 );
			}
			return html ;
		}

		#region 內部代碼 ******************************************************

		/// <summary>
		/// 獲得包圍餅圖區域的點坐標數組
		/// </summary>
		/// <param name="item">餅圖項目</param>
		/// <returns>點坐標數組</returns>
		private Point[] GetPoints( PieShapeItem item )
		{
			GraphicsPath path = CreatePath( item );
			path.Flatten();
			PointF[] ps = path.PathPoints ;
			path.Dispose();
			Point[] ps2 = new Point[ ps.Length ] ;
			for( int iCount = 0 ; iCount < ps.Length ; iCount ++ )
			{
				ps2[ iCount ].X = ( int ) ( ps[ iCount ].X );
				ps2[ iCount ].Y = ( int ) ( ps[ iCount ].Y );
			}
			return ps2 ;
		}

		/// <summary>
		/// 根據橢圓形狀修正角度
		/// </summary>
		/// <param name="angle">原始角度</param>
		/// <returns>修正后的角度值</returns>
		private float FixAngle( float angle )
		{
			if( ( angle % 90.0 ) == 0 )
				return angle ;
			if( intWidth == intHeight )
				return angle ;
			double x = intWidth * Math.Cos( angle * Math.PI / 180 );
			double y = intHeight * Math.Sin( angle * Math.PI / 180 );
			float result = ( float ) ( Math.Atan2( y , x ) * 180 / Math.PI );
			if( result < 0 )
				result += 360 ;
			return result ;
		}

		/// <summary>
		/// 標準顏色列表
		/// </summary>
		private static Color[] StdColors = new Color[]{
														  Color.Purple,
														  Color.Red,
														  Color.Green,
														  Color.Blue,
														  Color.Yellow,
														  Color.Olive,
														  Color.Navy,
														  Color.Aqua,
														  Color.Lime,
														  Color.Maroon,
														  Color.Teal,
														  Color.Fuchsia
													  };

		#endregion

	}//public class PieShape : System.Collections.CollectionBase
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费视频大全| 亚洲精品中文在线影院| 99国产精品久久久| 日韩成人精品视频| 日本不卡123| 欧美一区二区三区在线看| 欧美一级一区二区| 日韩成人av影视| 久久免费美女视频| 成人一区二区三区| 亚洲四区在线观看| 欧美日韩中文精品| 美女爽到高潮91| 久久久亚洲高清| 成人国产精品视频| 午夜精品久久一牛影视| 婷婷中文字幕一区三区| 久久国产生活片100| 成人国产精品免费观看视频| 欧美日精品一区视频| 精品少妇一区二区三区日产乱码 | 国产欧美日产一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品久久久久久久久久免费看| 亚洲精品在线观看视频| 欧美国产精品一区| 亚洲一级在线观看| 国产精品99精品久久免费| 色久综合一二码| 欧美成人性战久久| 亚洲国产日韩精品| 成人中文字幕电影| 欧美色综合网站| 在线播放一区二区三区| 亚洲视频在线一区二区| 国产成人av网站| 欧美一区二区日韩| 一区二区三区在线视频免费| 91在线国产福利| 欧美人妖巨大在线| 午夜欧美在线一二页| 日本欧美在线看| 色综合久久综合| 国产精品一区二区三区乱码| 五月激情综合网| av高清久久久| 久久se这里有精品| 亚洲成av人片观看| 中文字幕一区二区在线观看| 欧美xxxxx裸体时装秀| 色94色欧美sute亚洲线路一久| 国产伦精品一区二区三区在线观看 | 99久久精品国产导航| 26uuu久久综合| 精品一区精品二区高清| 久久综合99re88久久爱| 国产99精品国产| 国产精品不卡在线观看| www.日韩大片| 亚洲最色的网站| 欧美无乱码久久久免费午夜一区 | 99久久婷婷国产综合精品电影| 成人h精品动漫一区二区三区| 中文字幕不卡在线| 粉嫩aⅴ一区二区三区四区| 欧美一区二区免费观在线| 久久精品国产99国产精品| 精品精品国产高清a毛片牛牛| 国产91精品久久久久久久网曝门| 国产精品传媒入口麻豆| 欧美午夜影院一区| 精品在线免费观看| 中文久久乱码一区二区| 欧美最新大片在线看| 午夜精品一区在线观看| 国产婷婷一区二区| 欧美日韩精品一区二区三区蜜桃| 波多野结衣91| 国产一区二区看久久| 精品国精品国产| 狠狠色狠狠色综合| 色综合久久久网| 国产欧美日韩综合精品一区二区| 毛片av一区二区| 免费在线观看日韩欧美| 奇米影视在线99精品| 日本不卡免费在线视频| 激情文学综合网| 黄网站免费久久| 国产伦精品一区二区三区在线观看| 国产美女在线精品| 国产风韵犹存在线视精品| 成人性生交大片免费看视频在线| av网站免费线看精品| 成人黄色大片在线观看| 国产精品一区三区| 久久精品国产久精国产| 日韩国产欧美一区二区三区| 国内外精品视频| 日韩三级精品电影久久久| 国产一区二区精品在线观看| 17c精品麻豆一区二区免费| 国产a视频精品免费观看| 欧美三级在线视频| 91精品国产品国语在线不卡| 精品久久久久久久人人人人传媒| 国产精品久久久久婷婷| 欧美三级一区二区| 亚洲一区二区三区爽爽爽爽爽 | 在线观看91精品国产入口| 91香蕉视频黄| 欧美一区二区视频在线观看| 欧美精品1区2区3区| 日韩精品中文字幕在线一区| 日韩午夜av电影| 久久日韩粉嫩一区二区三区| 国产精品欧美久久久久无广告| 久久久久88色偷偷免费| 久久夜色精品国产噜噜av| 亚洲卡通欧美制服中文| 亚洲精品你懂的| 久久国产尿小便嘘嘘| 欧美系列在线观看| 欧美精品一区二区在线观看| 欧美国产成人在线| 免费在线欧美视频| 日韩欧美一区在线观看| 国产精品久久久久久久浪潮网站| 国产精品麻豆欧美日韩ww| 国产精品萝li| 一区二区三区四区精品在线视频 | 亚洲成人在线观看视频| 国产精品一区二区久激情瑜伽 | 欧美激情一区不卡| 亚洲在线中文字幕| 日日摸夜夜添夜夜添亚洲女人| 免播放器亚洲一区| 激情综合色综合久久综合| 大胆亚洲人体视频| 欧美精品在欧美一区二区少妇| 91高清视频免费看| 久久久精品国产免费观看同学| 成人av网址在线观看| 国产精品久久久久9999吃药| 污片在线观看一区二区| 欧美高清你懂得| 亚洲欧美色图小说| www.视频一区| 精品1区2区在线观看| 丁香六月综合激情| 亚洲综合小说图片| 91婷婷韩国欧美一区二区| 91国产视频在线观看| 69成人精品免费视频| 亚洲欧美日韩在线不卡| 懂色av一区二区在线播放| 欧美mv日韩mv亚洲| 视频一区二区欧美| 欧美午夜电影一区| 亚洲黄色录像片| 99麻豆久久久国产精品免费优播| 欧美喷水一区二区| 中文字幕一区二区在线观看| 成人国产精品免费观看视频| 亚洲国产精品成人综合色在线婷婷| 国产真实乱对白精彩久久| 久久香蕉国产线看观看99| 蜜桃av一区二区三区| 日韩午夜在线观看视频| 精品一区二区三区不卡| 精品国产区一区| 国产一区二区三区日韩| 久久久久久久久久看片| 国产精品一区二区三区乱码| 久久久五月婷婷| 成人精品高清在线| 亚洲天堂2014| 欧美三级视频在线观看| 偷拍一区二区三区| 91精品久久久久久久99蜜桃| 蜜桃av一区二区三区电影| 精品人在线二区三区| 国产精品18久久久久久久久| 久久久久久久久免费| av影院午夜一区| 中文字幕中文字幕在线一区 | 另类中文字幕网| 日韩欧美美女一区二区三区| 看电影不卡的网站| 国产日韩欧美精品在线| 91捆绑美女网站| 亚洲成av人片一区二区三区| 精品国产91乱码一区二区三区| 国产白丝精品91爽爽久久| 亚洲精品老司机| 日韩视频一区二区三区| 波多野结衣91| 免费人成黄页网站在线一区二区| 久久久不卡网国产精品二区| 色综合婷婷久久|