C# 25Dpoint ,做一个备份
cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _25Dpoint
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
SolidBrush brushBlack = new SolidBrush(Color.Black);
g.DrawLine(Pens.Black, 200, 0, 200, 400); //画出直角坐标系的x,y轴
g.DrawLine(Pens.Black, 0, 200, 400, 200);
float x1 = 20, y1 = 180; //假设黑点的坐标为20,180 (这个坐标数字是WIN屏幕的坐标,从直角坐标系到WIN屏幕坐标系是不同的,需要转换一下)
Point winpoint1 = screen_point(x1, y1); //直角坐标系到WIN屏幕坐标系
g.DrawString(winpoint1.X.ToString() + "," + winpoint1.Y.ToString(), Font, brushBlack, winpoint1.X, winpoint1.Y); //显示字符串
g.FillEllipse(brushBlack, winpoint1.X, winpoint1.Y, 5, 5); //显示点
float x2 = (float) (x1 * Math.Cos(-45) - y1 * Math.Sin(-45)); //坐标转轴公式 顺时针转45度
float y2 = (float) (x1 * Math.Sin(-45) + y1 * Math.Cos(-45));
Point winpoint2 = screen_point(x2, y2);
g.FillEllipse(brushBlack, winpoint2.X, winpoint2.Y, 5, 5); //显示字符串
g.DrawString(winpoint2.X.ToString() + "," + winpoint2.Y.ToString(), Font, brushBlack, winpoint2.X, winpoint2.Y); //显示转换后的点
}
public Point screen_point(float cartX, float cartY)
{
Point screenpoint = new Point();
screenpoint.X = (int) cartX + ( 400/2 );
screenpoint.Y = (400/2) - (int)cartY;
return screenpoint;
}
}
}