您的位置:首页 > 编程语言 > C#

C#绘制三角形以及旋转

2016-04-15 09:46 639 查看
三角形类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace transform
{
class Triangle
{
PointF A, B, C;

public Triangle(PointF a,PointF b,PointF c)
{
A = a;
B = b;
C = c;
}

/// <summary>
/// 绘制三角形
/// </summary>
/// <param name="g"></param>
public void Draw(Graphics g)
{
Pen pen = new Pen(Color.Red,5);
g.DrawLine(pen, A, B);
g.DrawLine(pen, B, C);
g.DrawLine(pen, C, A);
}

/// <summary>
/// 三角形旋转
/// </summary>
/// <param name="degrees"></param>
public void Rotate(int degrees)
{
float angle = (float)(degrees / 360f * Math.PI);
float newX = (float)(A.X * Math.Cos(angle) - A.Y * Math.Sin(angle));
float newY = (float)(A.X * Math.Sin(angle) + A.Y * Math.Cos(angle));

A.X = newX;
A.Y = newY;

newX = (float)(B.X * Math.Cos(angle) - B.Y * Math.Sin(angle));
newY = (float)(B.X * Math.Sin(angle) + B.Y * Math.Cos(angle));

B.X = newX;
B.Y = newY;

newX = (float)(C.X * Math.Cos(angle) - C.Y * Math.Sin(angle));
newY = (float)(C.X * Math.Sin(angle) + C.Y * Math.Cos(angle));

C.X = newX;
C.Y = newY;
}
}
}


C# form:

using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace transform
{
public partial class Form1 : Form
{
Triangle t;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

PointF A = new PointF(0, -200);
PointF B = new PointF(200, 200);
PointF C = new PointF(-200, 200);

t = new Triangle(A, B, C);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.TranslateTransform(300, 300);
t.Draw(e.Graphics);
}

private void timer1_Tick(object sender, EventArgs e)
{
t.Rotate(1);
this.Invalidate();
}
}
}


使用C#自带的窗口程序

1.创建一个三角形类 使用了C#绘制方法

2.form中添加绘制方法,添加一个定时器

3.定时器中需要设置窗口无效 可以实时进行重绘 显示旋转

4.打开双缓存避免显示一闪一闪
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  旋转