国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#窗體程序畫傾斜一定角度的橢圓

2019-11-17 02:16:17
字體:
來源:轉載
供稿:網友

C#窗體程序畫傾斜一定角度的橢圓

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace Ellipse{ public partial class Form1 : Form { PointF xyPoint = new PointF(); //左上角的X,Y坐標 PointF centerPoint = new PointF();//橢圓的中心點 PointF movePoint = new PointF(); PointF xiePointF=new PointF(); PointF xiedPointF = new PointF();//傾斜一定角度后的點 PRivate double perAngle = 0; private double nowAngle; PointF[] pointFs=new PointF[201]; PointF[] pointFs1=new PointF[201];//與pointFs對稱的點數組,橢圓是對稱的 PointF[] xiePointFs=new PointF[201];//傾斜的橢圓上半部分 PointF[] xiePointFs1 = new PointF[201];//傾斜的橢圓下半部分,對稱的部分 private float a =200; private float b =100; private float stepLength = 2;//通過X坐標逐次加2計算出Y坐標,將所有坐標存在數組中,用DrawCurve連接 private float xLength = 0;//點到坐標Y軸的線段距離 private float yLength = 0;//顛倒坐標X軸的線段距離 private float dbYlength = 0; private float xiedLength = 0;//點到橢圓中心點的線段長度 private int angle = 0;//傾斜的角度 public Form1() { InitializeComponent(); } private void panel1_Paint(object sender, PaintEventArgs e) { } private void panel1_MouseClick(object sender, MouseEventArgs e)////畫布鼠標鍵點擊事件,重畫圖形 { if (e.Button != MouseButtons.Left) { return; } if (this.textBox1.Text == "") { this.errorProvider1.SetError(this.textBox1, "請輸入傾斜的角度"); return; } else { this.errorProvider1.SetError(this.textBox1, ""); } xyPoint.X = this.panel1.Width/2-200; xyPoint.Y = this.panel1.Height/2-100; centerPoint.X = xyPoint.X + a; centerPoint.Y = xyPoint.Y + b; Graphics graphics = this.panel1.CreateGraphics(); graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.Clear(this.panel1.BackColor); Pen pen = new Pen(Color.Red); for (int index = 0; index < pointFs.Length; index++) { movePoint.X = index * stepLength + xyPoint.X; xLength = centerPoint.X - movePoint.X; yLength = (float)(Math.Sqrt((1 - (xLength * xLength) / 40000) * 10000)); movePoint.Y = b - yLength + xyPoint.Y; pointFs[index] = movePoint; } graphics.DrawCurve(pen, pointFs, 1.5f); for (int index = 0; index < pointFs1.Length; index++) { dbYlength = centerPoint.Y - pointFs[index].Y; pointFs1[index].Y = centerPoint.Y + dbYlength; pointFs1[index].X = pointFs[index].X; } graphics.DrawCurve(pen, pointFs1, 1.5f); for (int index = 0; index < pointFs.Length; index++) { xiePointF = pointFs[index]; double startAngle = Math.Atan2(xiePointF.Y - centerPoint.Y, xiePointF.X - centerPoint.X); string jiaodu = this.textBox1.Text; perAngle = int.Parse(jiaodu) * Math.PI / 180; nowAngle = startAngle + perAngle; xiedLength = (float)Math.Sqrt(Math.Pow(xiePointF.X - centerPoint.X, 2) + Math.Pow(xiePointF.Y - centerPoint.Y, 2)); xiedPointF.X = centerPoint.X - (float)(xiedLength * Math.Cos(nowAngle)); xiedPointF.Y = centerPoint.Y + (float)(xiedLength * Math.Sin(nowAngle)); xiePointFs[index] = xiedPointF; } graphics.DrawCurve(pen, xiePointFs, 1.5f); for (int index = 0; index < pointFs1.Length; index++) { xiePointF = pointFs1[index]; double startAngle = Math.Atan2(xiePointF.Y - centerPoint.Y, xiePointF.X - centerPoint.X); string jiaodu = this.textBox1.Text; perAngle = int.Parse(jiaodu) * Math.PI / 180; nowAngle = startAngle + perAngle; xiedLength = (float)Math.Sqrt(Math.Pow(xiePointF.X - centerPoint.X, 2) + Math.Pow(xiePointF.Y - centerPoint.Y, 2)); xiedPointF.X = centerPoint.X - (float)(xiedLength * Math.Cos(nowAngle)); xiedPointF.Y = centerPoint.Y + (float)(xiedLength * Math.Sin(nowAngle)); xiePointFs1[index] = xiedPointF; } graphics.DrawCurve(pen, xiePointFs1, 1.5f); } private void button1_Click(object sender, EventArgs e)//傾斜角度,每次遞增10度 { angle += 10; this.textBox1.Text = angle.ToString(); if (this.textBox1.Text == "") { this.errorProvider1.SetError(this.textBox1, "請輸入傾斜的角度"); return; } else { this.errorProvider1.SetError(this.textBox1, ""); } xyPoint.X = this.panel1.Width / 2-200; xyPoint.Y = this.panel1.Height / 2-100; centerPoint.X = xyPoint.X + a; centerPoint.Y = xyPoint.Y + b; Graphics graphics = this.panel1.CreateGraphics(); graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.Clear(this.panel1.BackColor); Pen pen = new Pen(Color.Red); for (int index = 0; index < pointFs.Length; index++) { movePoint.X = index * stepLength + xyPoint.X; xLength = centerPoint.X - movePoint.X; yLength = (float)(Math.Sqrt((1 - (xLength * xLength) / 40000) * 10000)); movePoint.Y = b - yLength + xyPoint.Y; pointFs[index] = movePoint; } graphics.DrawCurve(pen, pointFs, 1.5f); for (int index = 0; index < pointFs1.Length; index++) { dbYlength = centerPoint.Y - pointFs[index].Y; pointFs1[index].Y = centerPoint.Y + dbYlength; pointFs1[index].X = pointFs[index].X; } graphics.DrawCurve(pen, pointFs1, 1.5f); for (int index = 0; index < pointFs.Length; index++) { xiePointF = pointFs[index]; double startAngle = Math.Atan2(xiePointF.Y - centerPoint.Y, xiePointF.X - centerPoint.X); string jiaodu = this.textBox1.Text; perAngle = int.Parse(jiaodu) * Math.PI / 180; nowAngle = startAngle + perAngle; xiedLength = (float)Math.Sqrt(Math.Pow(xiePointF.X - centerPoint.X, 2) + Math.Pow(xiePointF.Y - centerPoint.Y, 2)); xiedPointF.X = centerPoint.X - (float)(xiedLength * Math.Cos(nowAngle)); xiedPointF.Y = centerPoint.Y + (float)(xiedLength * Math.Sin(nowAngle)); xiePointFs[index] = xiedPointF; } graphics.DrawCurve(pen, xiePointFs, 1.5f); for (int index = 0; index < pointFs1.Length; index++) { xiePointF = pointFs1[index]; double startAngle = Math.Atan2(xiePointF.Y - centerPoint.Y, xiePointF.X - centerPoint.X); string jiaodu = this.textBox1.Text; perAngle = int.Parse(jiaodu) * Math.PI / 180; nowAngle = startAngle + perAngle; xiedLength = (float)Math.Sqrt(Math.Pow(xiePointF.X - centerPoint.X, 2) + Math.Pow(xiePointF.Y - centerPoint.Y, 2)); xiedPointF.X = centerPoint.X - (float)(xiedLength * Math.Cos(nowAngle)); xiedPointF.Y = centerPoint.Y + (float)(xiedLength * Math.Sin(nowAngle)); xiePointFs1[index] = xiedPointF; } graphics.DrawCurve(pen, xiePointFs1, 1.5f); } private void button2_Click(object sender, EventArgs e)//傾斜角度,每次遞減10度 { angle -= 10; this.textBox1.Text = angle.ToString(); if (this.textBox1.Text == "") { this.errorProvider1.SetError(this.textBox1, "請輸入傾斜的角度"); return; } else { this.errorProvider1.SetError(this.textBox1, ""); } xyPoint.X = this.panel1.Width / 2-200; xyPoint.Y = this.panel1.Height / 2-100; centerPoint.X = xyPoint.X + a; centerPoint.Y = xyPoint.Y + b; Graphics graphics = this.panel1.CreateGraphics(); graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.Clear(this.panel1.BackColor); Pen pen = new Pen(Color.Red); for (int index = 0; index < pointFs.Length; index++) { movePoint.X = index * stepLength + xyPoint.X; xLength = centerPoint.X - movePoint.X; yLength = (float)(Math.Sqrt((1 - (xLength * xLength) / 40000) * 10000)); movePoint.Y = b - yLength + xyPoint.Y; pointFs[index] = movePoint; } graphics.DrawCurve(pen, pointFs, 1.5f); for (int index = 0; index < pointFs1.Length; index++) { dbYlength = centerPoint.Y - pointFs[index].Y; pointFs1[index].Y = centerPoint.Y + dbYlength; pointFs1[index].X = pointFs[index].X; } graphics.DrawCurve(pen, pointFs1, 1.5f); for (int index = 0; index < pointFs.Length; index++) { xiePointF = pointFs[index]; double startAngle = Math.Atan2(xiePointF.Y - centerPoint.Y, xiePointF.X - centerPoint.X); string jiaodu = this.textBox1.Text; perAngle = int.Parse(jiaodu) * Math.PI / 180; nowAngle = startAngle + perAngle; xiedLength = (float)Math.Sqrt(Math.Pow(xiePointF.X - centerPoint.X, 2) + Math.Pow(xiePointF.Y - centerPoint.Y, 2)); xiedPointF.X = centerPoint.X - (float)(xiedLength * Math.Cos(nowAngle)); xiedPointF.Y = centerPoint.Y + (float)(xiedLength * Math.Sin(nowAngle)); xiePointFs[index] = xiedPointF; } graphics.DrawCurve(pen, xiePointFs, 1.5f); for (int index = 0; index < pointFs1.Length; index++) { xiePointF = pointFs1[index]; double startAngle = Math.Atan2(xiePointF.Y - centerPoint.Y, xiePointF.X - centerPoint.X); string jiaodu = this.textBox1.Text; perAngle = int.Parse(jiaodu) * Math.PI / 180; nowAngle = startAngle + perAngle; xiedLength = (float)Math.Sqrt(Math.Pow(xiePointF.X - centerPoint.X, 2) + Math.Pow(xiePointF.Y - c

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉水县| 肥乡县| 合阳县| 南溪县| 广宗县| 图片| 榕江县| 营山县| 抚顺市| 江孜县| 金坛市| 赤水市| 方城县| 宝丰县| 改则县| 松阳县| 永修县| 安丘市| 福建省| 鸡泽县| 酒泉市| 蚌埠市| 广汉市| 西吉县| 丹阳市| 台东市| 荔浦县| 前郭尔| 寻乌县| 垣曲县| 高碑店市| 兴文县| 楚雄市| 五家渠市| 商河县| 隆子县| 龙海市| 濉溪县| 调兵山市| 德庆县| 遵义县|