using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;
using System.Net.NetworkInformation;
using System.IO;
using System.Runtime.CompilerServices;
namespace XY
{
internal class feng
{
public static void DrawXY(Panel pan)
{
Graphics g = pan.CreateGraphics();
//整体内缩move像素
float move = 35f;
float newX = pan.Width - move;
float newY = pan.Height - move;
//绘制X轴,
PointF px1 = new PointF(move, newY);
PointF px2 = new PointF(newX, newY);
g.DrawLine(new Pen(Brushes.Black, 2), px1, px2);
//绘制Y轴
PointF py1 = new PointF(move, move);
PointF py2 = new PointF(move, newY);
g.DrawLine(new Pen(Brushes.Black, 2), py1, py2);
}
/// <summary>
/// 画出X轴上的分值线,从零开始
/// </summary>
/// <param name="pan"></param>
/// <param name="maxX"></param>
/// <param name="len"></param>
public static void DrawXLine(Panel pan, float maxX, int len, DataTable dt)
{
int h = 25;
int z = 13;
int s = 12;
float move = 35f;
float LenX = pan.Width - 2 * move;
float LenY = pan.Height - 2 * move;
Graphics g = pan.CreateGraphics();
g.SmoothingMode = SmoothingMode.AntiAlias;
len = 90;
Pen pen = new Pen(Color.Black, 1);
for (int j = 1; j <= 24; j++)
{
for (int i = 1; i <= len; i++)
{
if (Convert.ToDouble(dt.Rows[i][s]) <= 2)
{
g.TranslateTransform(LenX * i / len + move + 1, LenY * (h - j) / h + move);
// 旋转画板
g.RotateTransform(float.Parse((dt.Rows[i][z]).ToString()));
g.TranslateTransform(-LenX * i / len - move - 1, -LenY * (h - j) / h - move);
g.DrawLine(pen, LenX * i / len + move - 3, LenY * (h - j) / h + move - 7, LenX * i / len + move - 3, LenY * (h - j) / h + move + 7);//添加竖直线
g.DrawLine(pen, LenX * i / len + move - 3, LenY * (h - j) / h + move - 7, LenX * i / len + move + 1, LenY * (h - j) /h + move + 7);//添加横直线
g.ResetTransform();
}
if (2 < Convert.ToDouble(dt.Rows[i][s]) && Convert.ToDouble(dt.Rows[i][s]) <= 4)
{
g.TranslateTransform(LenX * i / len + move +1, LenY * (h - j) / h + move);
// 旋转画板
g.RotateTransform(float.Parse((dt.Rows[i][z]).ToString()));
g.TranslateTransform(-LenX * i / len - move -1, -LenY * (h - j) / h - move);
g.DrawLine(pen, LenX * i / len + move - 3, LenY * (h - j) / h + move - 7, LenX * i/ len + move - 3, LenY * (h - j) / h + move + 7);//添加竖直线
g.DrawLine(pen, LenX * i / len + move - 3, LenY * (h - j) / h + move - 7, LenX * i/ len + move + 5, LenY * (h - j) / h + move - 7);
g.ResetTransform();
}
if (4 < Convert.ToDouble(dt.Rows[i][s]) && Convert.ToDouble(dt.Rows[i][s]) <= 6)
{
g.TranslateTransform(LenX * i / len + move + 1, LenY * (h - j) / h + move);
// 旋转画板
g.RotateTransform(float.Parse((dt.Rows[i][z]).ToString()));
g.TranslateTransform(-LenX * i / len - move - 1, -LenY * (h - j) / h - move);
g.DrawLine(pen, LenX * i / len + move - 3, LenY * (h - j) / h + move - 7, LenX * i / len + move - 3, LenY * (h - j) / h + move + 7);//添加竖直线
C#的Winform通过GDI+以及Datatable绘制基于CSV文件的风羽图
于 2024-03-29 15:32:54 首次发布