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

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

?? triangledrawer.cs

?? 網上流傳的5個面試題目
?? CS
字號:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Triangle
{
	/// <summary>
	/// TriangleDrawer 用于繪制三角形。
	/// </summary>
	public class TriangleDrawer
	{
		/// <summary>
		/// 構造函數,應傳入繪制三角形的窗體。
		/// </summary>
		/// <param name="form">繪制三角形的窗體。</param>
		public TriangleDrawer(Form form)
		{
			this.form = form;
			aTimer = new System.Timers.Timer(10);
			aTimer.Stop();
			aTimer.Elapsed += new System.Timers.ElapsedEventHandler(DrawTrangle);
		}

		private Form form;
		private System.Timers.Timer aTimer;
		private int drawTime;
		private Triangle currentTriangle = null;

		/// <summary>
		/// 繪制下落的三角形。
		/// </summary>
		public void Draw()
		{
			aTimer.Stop();
			drawTime = -1;
			aTimer.Start();
		}

		/// <summary>
		/// 停止繪制三角形。
		/// </summary>
		public void Stop()
		{
			aTimer.Stop();
		}

		/// <summary>
		/// 繪制當前的三角形。
		/// </summary>
		public void DrawCurrentTriangle()
		{
			if (currentTriangle == null)
				return;
			Graphics dc = form.CreateGraphics();
			Pen pen = new Pen(form.ForeColor, 1);
			currentTriangle.Draw(dc, pen);
		}

		/// <summary>
		/// 繪制新三角形并抹去舊三角形。
		/// </summary>
		/// <param name="source"></param>
		/// <param name="e"></param>
		private void DrawTrangle(object source, System.Timers.ElapsedEventArgs e)
		{
			//設置三角數數據。
			const int height = 30;										//準備繪制高為30的等邊三角形。
			const int circleTimes = 5;									//三角形旋轉的次數。
			const int cidaOffset = 5;									//每次重繪時旋轉的角度。
			int drawTimes = GetDrawTimes(circleTimes, cidaOffset);		//三角形重繪的次數。
			Point startCenter = GetStartCenter(height);					//三角形的起始外心。
			float XStep = GetXStep(height, drawTimes);					//外心的橫坐標每次重繪偏移量。
			float YStep = GetYStep(height, drawTimes);					//外心的縱坐標每次重繪偏移量。
			Graphics dc = form.CreateGraphics();
			
			++drawTime;
			if (drawTime == drawTimes)
				aTimer.Stop();
			Point center = new Point((int)(startCenter.X + XStep * drawTime + 0.5), 
				(int)(startCenter.Y + YStep * drawTime + 0.5));			//三角形的外心坐標。
			int cida = 0 - drawTime * cidaOffset;						//三角形的高與垂直線的角度。
			Triangle tri = GetTriangle(height, center, cida);

			//抹去舊三角形。
			Pen pen = new Pen(form.BackColor, 1);
			if (currentTriangle != null)
				currentTriangle.Draw(dc, pen);
			//繪制新三角形。
			pen.Color = form.ForeColor;
			tri.Draw(dc, pen);
			currentTriangle = tri;
			if (drawTime == drawTimes)
				aTimer.Stop();
		}

		#region 一些關于三角形重繪的數據計算。
		/// <summary>
		/// 根據三角形的高獲得初始的外心。
		/// </summary>
		/// <param name="height">三角形的高。</param>
		/// <returns>初始的外心。</returns>
		private Point GetStartCenter(int height)
		{
			return new Point((int)(height / Math.Sqrt(3) + 0.5), (int)(height * 2 / 3F + 0.5));
		}

		/// <summary>
		/// 計算三角形重繪的次數。
		/// </summary>
		/// <param name="circleTimes">三角形旋轉的次數。</param>
		/// <param name="cidaOffset">每次重繪時旋轉的角度。</param>
		/// <returns>三角形重繪的次數。</returns>
		private int GetDrawTimes(int circleTimes, int cidaOffset)
		{
			return 360 * circleTimes / cidaOffset;
		}

		/// <summary>
		/// 計算三角形每次重繪時外心的橫坐標偏移量。
		/// </summary>
		/// <param name="height">三角形的高。</param>
		/// <param name="drawTimes">重繪次數。</param>
		/// <returns>三角形每次重繪時外心的橫坐標偏移量。</returns>
		private float GetXStep(int height, int drawTimes)
		{
			Point startCenter = GetStartCenter(height);
			return (float)(form.ClientRectangle.Width - startCenter.X * 2) / drawTimes;
		}

		/// <summary>
		/// 計算三角形每次重繪時外心的縱坐標偏移量。
		/// </summary>
		/// <param name="height">三角形的高。</param>
		/// <param name="drawTimes">重繪次數。</param>
		/// <returns>三角形每次重繪時外心的橫坐標偏移量。</returns>
		private float GetYStep(int height, int drawTimes)
		{
			return (float)(form.ClientRectangle.Height - height) / drawTimes;
		}
		#endregion

		#region 計算三角形數據的方法。
		/// <summary>
		/// 根據三角形的高、重心、高與垂線的角度獲得等邊三角形。
		/// </summary>
		/// <param name="height">三角形的高。</param>
		/// <param name="center">三角形的重心。</param>
		/// <param name="cida">高與垂線的角度</param>
		/// <returns>符合要求的三角形。</returns>
		private Triangle GetTriangle(int height, Point center, int cida)
		{
			Point pt1 = GetLineEndPoint(height * 2 / 3F, center, cida);
			Point pt2 = GetLineEndPoint(height * 2 / 3F, center, cida + 120);
			Point pt3 = GetLineEndPoint(height * 2 / 3F, center, cida + 240);
			return new Triangle(pt1, pt2, pt3);
		}

		/// <summary>
		/// 根據線段的起點、起點到終點連接與垂線的角度、線段的長度獲得線段的終點。
		/// </summary>
		/// <param name="distance">線段的長度。</param>
		/// <param name="center">線段的起點。</param>
		/// <param name="cida">起點到終點連接與垂線的角度。</param>
		/// <returns>線段的終點。</returns>
		private Point GetLineEndPoint(float distance, Point startPoint, int cida)
		{
			float x = startPoint.X + distance * (float)Math.Sin(cida * 3.142F / 180);
			float y = startPoint.Y - distance * (float)Math.Cos(cida * 3.142F / 180);
			return new Point((int)(x + 0.5), (int)(y + 0.5));
		}
		#endregion
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产精品成人| 91福利社在线观看| 波多野结衣亚洲| 色天天综合色天天久久| 91久久线看在观草草青青| 欧美日韩国产美| 国产日韩欧美在线一区| 一区二区三区在线观看动漫 | 亚洲午夜日本在线观看| 亚洲综合激情网| 懂色av中文字幕一区二区三区| 99久久婷婷国产精品综合| 欧美一区二区三区免费观看视频 | 日韩福利视频导航| 风间由美一区二区三区在线观看| 一本久久a久久精品亚洲| 日韩亚洲欧美高清| 一区二区三区四区不卡在线| 国产91色综合久久免费分享| 欧美日韩亚洲综合一区二区三区| 久久久综合网站| 国产真实乱偷精品视频免| 欧美三级中文字幕| 亚洲女人小视频在线观看| 国产suv精品一区二区6| 欧美一级艳片视频免费观看| 亚洲1区2区3区视频| 欧美三级电影在线观看| 亚洲在线视频网站| 成人动漫av在线| ...xxx性欧美| 99国产欧美另类久久久精品| 国产精品午夜电影| 国产999精品久久| 欧美激情综合五月色丁香| 国产精品一区二区三区99| 精品日韩一区二区三区免费视频| 日韩精品欧美精品| 日韩欧美在线综合网| 激情六月婷婷久久| 久久久久久日产精品| 国产精品影音先锋| 国产日韩欧美a| 91免费看视频| 日韩精品91亚洲二区在线观看| 欧美肥妇free| 国产99久久久久| 午夜成人免费电影| xnxx国产精品| 91福利精品第一导航| 日韩成人午夜精品| 国产午夜精品久久久久久久| 色视频成人在线观看免| 玖玖九九国产精品| 亚洲图片另类小说| 精品国产凹凸成av人导航| 国产一区二区成人久久免费影院| 亚洲欧洲精品一区二区三区| 欧美喷水一区二区| 成人av先锋影音| 免费看欧美美女黄的网站| 综合在线观看色| 26uuu国产在线精品一区二区| 91黄色免费看| 91视频精品在这里| 国产99久久久精品| 欧美aaa在线| 婷婷成人综合网| 亚洲欧美日韩一区二区三区在线观看| 日韩三级视频中文字幕| 欧美日韩激情在线| 在线精品视频小说1| 丁香另类激情小说| 国产精品99久| 国产成人免费视频网站高清观看视频| 午夜精品视频在线观看| 亚洲成av人片| 日韩精品一二三四| 免费日韩伦理电影| 韩国成人精品a∨在线观看| 蜜桃av一区二区| 琪琪久久久久日韩精品| 久久99久国产精品黄毛片色诱| 亚洲v精品v日韩v欧美v专区| 五月激情综合婷婷| 免费日韩伦理电影| 国产高清一区日本| 91在线国产观看| 日韩高清国产一区在线| 欧美韩国日本综合| 国产网站一区二区三区| 亚洲色图在线播放| jlzzjlzz亚洲女人18| 久久日一线二线三线suv| 国产亚洲精品7777| 国产精品久久久久久亚洲伦| 亚洲夂夂婷婷色拍ww47| 日韩不卡一区二区三区| 久久99精品视频| 国产91高潮流白浆在线麻豆| 99视频一区二区| 91精品婷婷国产综合久久竹菊| 精品久久免费看| 亚洲天堂中文字幕| 五月激情丁香一区二区三区| 粉嫩蜜臀av国产精品网站| 在线成人av影院| 亚洲一二三四区| 99久久婷婷国产综合精品电影| 日韩欧美综合在线| 天堂久久久久va久久久久| 一本大道久久a久久综合婷婷| 精品福利视频一区二区三区| 亚洲成av人片一区二区三区| 91婷婷韩国欧美一区二区| 国产欧美日韩另类视频免费观看 | 久久综合久久鬼色中文字| 久久影院午夜论| 一区二区三区四区视频精品免费| 色88888久久久久久影院野外| 亚洲国产精品影院| 国产精品国产三级国产有无不卡| 成人永久免费视频| 国产精品久久久久影院色老大| 97se亚洲国产综合自在线不卡| 亚洲欧美日韩在线| 欧美精品丝袜中出| 久久99精品一区二区三区| 国产亚洲一区二区在线观看| 国产精品66部| 亚洲精品自拍动漫在线| 欧美性猛交xxxx乱大交退制版 | 中文字幕在线观看不卡| 成人一区二区视频| 樱花草国产18久久久久| 日韩欧美在线网站| 国产精品亚洲а∨天堂免在线| 亚洲人成网站影音先锋播放| 51精品国自产在线| 99re亚洲国产精品| 日本免费新一区视频| 亚洲图片你懂的| 欧美一区二区成人6969| 成人小视频免费观看| 亚洲成av人片在www色猫咪| 久久久久久夜精品精品免费| 在线一区二区三区四区五区| 国产精品夜夜嗨| 美腿丝袜一区二区三区| 亚洲mv大片欧洲mv大片精品| 国产精品传媒视频| 国产精品美女视频| 亚洲欧美一区二区三区孕妇| 国产精品久久午夜| 亚洲免费高清视频在线| 午夜精品福利在线| 自拍av一区二区三区| 久久一区二区视频| 欧美另类一区二区三区| 色综合夜色一区| 成人a免费在线看| 99久久免费精品| jlzzjlzz亚洲日本少妇| 成人精品免费看| 成人午夜免费av| 成人av动漫在线| 色成年激情久久综合| 美女视频黄 久久| 久久国产精品露脸对白| 久久精品国产亚洲5555| 免费成人美女在线观看| 久久99日本精品| 国产在线一区观看| 成人av网站在线观看免费| 国产精品一区二区在线播放 | 大桥未久av一区二区三区中文| 国内精品国产成人| 国产成都精品91一区二区三| 成人免费视频国产在线观看| 成人免费高清视频在线观看| 日本韩国欧美三级| 91精品国产综合久久久久久久| 精品区一区二区| 亚洲人成精品久久久久| 亚洲va欧美va国产va天堂影院| 免费成人在线播放| 不卡视频在线观看| 91精品国产91久久久久久最新毛片 | 色狠狠桃花综合| 日韩亚洲欧美在线| 亚洲精品中文在线影院| 狠狠狠色丁香婷婷综合激情| 高清视频一区二区| 欧美videofree性高清杂交| 亚洲蜜臀av乱码久久精品| 国内精品伊人久久久久av影院 | 玉足女爽爽91| 国产suv一区二区三区88区| 91精品久久久久久久91蜜桃| 国产精品国产三级国产aⅴ中文 |