国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 竹北市| 长丰县| 梁山县| 武清区| 万源市| 北海市| 岳阳市| 灵台县| 绵竹市| 枝江市| 汾西县| 海林市| 和平区| 阜新市| 绵竹市| 濮阳县| 阳城县| 湟源县| 邛崃市| 郸城县| 德格县| 麻城市| 深水埗区| 温泉县| 福州市| 左贡县| 天镇县| 天门市| 雷州市| 万全县| 错那县| 中西区| 明水县| 商丘市| 辉县市| 赣州市| 弥渡县| 长丰县| 锡林郭勒盟| 河北省| 涿鹿县|