gdi+画图,画在winform里,添加控件后运行,一闪就消失怎么办
using System;using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace gdi_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DrawImage();
}
private void Form1_Shown(object sender, EventArgs e)
{
DrawImage();
}
private void DrawImage()
{
DrawXLine();//绘X轴分值线
DrawYLine();//绘Y轴分值线
DrawXY(); //绘XY轴
DrawAllData();//绘出所有产品的价格线
}
int n = 15;
public int i;
public int MinX = 60;
public int MinY = 60;
public int MaxX = 600;
public int MaxY = 610;
public int low1;
public int high1;
public double danwei1;
public int low2;
public int high2;
public double danwei2;
public int low3;
public int high3;
public double danwei3;
//double[] Pa = new double[15]{23.92,27.74,30.05,32.82,36.04,37.79,39.97,41.80,41.86,43.81,45.71,48.37,50.79,53.06,55.43};
//double[] Pax = new double[15] { 0.0, 11.17, 16.57, 22.23, 27.66, 31.76, 35.99,38.72,41.66,45.82,49.87,55.29,60.83,66.36,71.93 };
double[] Pa = new double[15] { 157.85, 158.13, 162.36, 168.22, 182.17, 191.72, 197.29, 200.21, 202.73, 202.51, 202.20, 200.65, 198.32, 194.21, 190.11 };
double[] Pax = new double[15] { 28.67,135.02,316.23,400.95,533.51,617.70,697.34,752.16,800.82,840.15,871.00,910.32,947.85,994.96,1036.74};
int[] Paint = new int[15];
int[] Paxint = new int[15];
double[] H = new double[15]{74.33,67.40,67.02,66.82,66.39,65.92,65.32,64.84,64.64,63.76,63.18,61.88,60.55,58.93,56.30};
//double[] Hx = new double[15] { 0.0, 11.17, 16.57, 22.23, 27.66, 31.76, 35.99, 38.72, 41.66, 45.82, 49.87, 55.29, 60.83, 66.36, 71.93 };
double[] Hx = new double[15] { 28.67, 135.02, 316.23, 400.95, 533.51, 617.70, 697.34, 752.16, 800.82, 840.15, 871.00, 910.32, 947.85, 994.96, 1036.74 };
int[] Hint = new int[15];
int[] Hxint = new int[15];
double[] Eff = new double[15]{0.00,26.61,36.23,44.37,49.95,54.32,57.66,58.88,63.07,65.38,67.58,69.35,71.10,72.26,71.63};
//double[] Effx = new double[15] { 0.0, 11.17, 16.57, 22.23, 27.66, 31.76, 35.99, 38.72, 41.66, 45.82, 49.87, 55.29, 60.83, 66.36, 71.93 };
double[] Effx = new double[15] { 28.67, 135.02, 316.23, 400.95, 533.51, 617.70, 697.34, 752.16, 800.82, 840.15, 871.00, 910.32, 947.85, 994.96, 1036.74 };
int[] Effint = new int[15];
int[] Effxint = new int[15];
//画出X轴与Y轴
private void DrawXY()
{
Graphics g = this.ImagePanel.CreateGraphics();
Point px1 = new Point(MinX-4, MaxY);
Point px2 = new Point(MaxX, MaxY);
g.DrawLine(new Pen(Brushes.Black, 1), px1, px2);
Point px11 = new Point(MinX, MaxY+4);
Point px22 = new Point(MaxX, MaxY+4);
g.DrawLine(new Pen(Brushes.Black, 1), px11, px22);
Point py1 = new Point(MinX, MinY);
Point py2 = new Point(MinX, MaxY+4);
g.DrawLine(new Pen(Brushes.Black, 1), py1, py2);
Point py11 = new Point(MinX-4, MinY);
Point py22 = new Point(MinX-4, MaxY-(MaxY-MinY)*6/11);
g.DrawLine(new Pen(Brushes.Black, 1), py11, py22);
Point py111 = new Point(MinX - 4, MaxY - (MaxY - MinY) * 5 / 11);
Point py222 = new Point(MinX - 4, MaxY);
g.DrawLine(new Pen(Brushes.Black, 1), py111, py222);
Point py3 = new Point(MaxX, MinY);//右边第一条
Point py4 = new Point(MaxX, MaxY+4);
g.DrawLine(new Pen(Brushes.Black, 1), py3, py4);
Point py33 = new Point(MaxX+4, MinY);//右边第一条
Point py44 = new Point(MaxX+4, MaxY-(MaxY-MinY)*1/11);
g.DrawLine(new Pen(Brushes.Black, 1), py33, py44);
Point py5 = new Point(MaxX+50, MinY+(MaxY-MinY)*5/11);//第二条
Point py6 = new Point(MaxX + 50, MinY + (MaxY - MinY) * 10/11);
g.DrawLine(new Pen(Brushes.Black, 1), py5, py6);
Point py55 = new Point(MaxX + 50-4, MinY + (MaxY - MinY) * 5 / 11);//第二条
Point py66 = new Point(MaxX + 50-4, MinY + (MaxY - MinY) * 10 / 11);
g.DrawLine(new Pen(Brushes.Black, 1), py55, py66);
Pen pen = new Pen(Color.Red, 1);
g.FillRectangle(pen.Brush, 0, MaxY + 20 * (i + 1), 10, 5);
g.DrawString("Q-Eff", new Font("宋体 ", 10f), Brushes.Black, new Point(Effxint[n-1]+2,Effint[n-1]-2));
g.DrawString("Q-H", new Font("宋体 ", 10f), Brushes.Black, new Point(Hxint[n - 1] + 2, Hint[n - 1] -2));
g.DrawString("Q-Pa", new Font("宋体 ", 10f), Brushes.Black, new Point(Paxint[n - 1] + 2, Paint[n - 1]-2));
for (i = 0; i < 6;i++ )
g.DrawString(Convert.ToString(low1+i*danwei1), new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 30, MinY - 8 + (MaxY - MinY) * (11-i) / 11));
//g.DrawString("30", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY - 8 + (MaxY - MinY) * 10 / 11));
//g.DrawString("40", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*9/11));
//g.DrawString("50", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*8/11));
//g.DrawString("60", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*7/11));
//g.DrawString("70", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*6/11));
g.DrawString("Pa(kW)", new Font("宋体 ",10f), Brushes.Black, new Point(MinX-52,MinY-25+(MaxY-MinY)*6/11));
for (i = 0; i < 6;i++ )
g.DrawString(Convert.ToString(low2+i*danwei2), new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 30, MinY - 8 + (MaxY - MinY) * (5 - i) / 11));
//g.DrawString("60", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*4/11));
//g.DrawString("65", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*3/11));
//g.DrawString("70", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*2/11));
//g.DrawString("75", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*1/11));
//g.DrawString("80", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 22, MinY-8+(MaxY-MinY)*0/11));
g.DrawString("H(m)", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX - 37, MinY-25+(MaxY-MinY)*0/11));
for (i = 0; i < 11; i++)
g.DrawString(Convert.ToString(low3+i*danwei3), new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * i / 10, MaxY+5));
//g.DrawString("10", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 1 / 10, MaxY+5));
// g.DrawString("20", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 2 / 10, MaxY+5));
//g.DrawString("30", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 3 / 10, MaxY+5));
//g.DrawString("40", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 4 / 10, MaxY+5));
//g.DrawString("50", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 5 / 10, MaxY+5));
//g.DrawString("60", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 6 / 10, MaxY+5));
//g.DrawString("70", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 7 / 10, MaxY+5));
//g.DrawString("80", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 8 / 10, MaxY+5));
//g.DrawString("90", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX -8+ (MaxX - MinX) * 9 / 10, MaxY+5));
//g.DrawString("100", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX-8+ (MaxX - MinX) *10 / 10, MaxY+5));
//g.DrawString("Q(l/s)", new Font("宋体 ", 10f), Brushes.Black, new Point(MinX+20+(MaxX-MinX)*10/ 10, MaxY+5));
g.DrawString("0", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*1/11));
g.DrawString("10", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*2/11));
g.DrawString("20", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*3/11));
g.DrawString("30", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*4/11));
g.DrawString("40", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*5/11));
g.DrawString("50", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*6/11));
g.DrawString("60", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*7/11));
g.DrawString("70", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*8/11));
g.DrawString("80", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*9/11));
g.DrawString("90", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 5, MaxY-8-(MaxY-MinY)*10/11));
g.DrawString("100", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +5, MaxY-8-(MaxY-MinY)*11/11));
g.DrawString("Eff(%)",new Font("宋体 ", 10f), Brushes.Black,new Point(MaxX+5,MaxY-25-(MaxY-MinY)*11/11));
g.DrawString("2", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +52, MaxY - 8 -(MaxY - MinX) * 1 / 11));
g.DrawString("3", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +52, MaxY - 8 - (MaxY - MinX) * 2 / 11));
g.DrawString("4", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +52, MaxY - 8 - (MaxY - MinX) * 3 / 11));
g.DrawString("5", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +52, MaxY - 8 - (MaxY - MinX) * 4 / 11));
g.DrawString("6", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +52, MaxY - 8 - (MaxY - MinX) * 5 / 11));
g.DrawString("7", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX +52, MaxY - 8 - (MaxY - MinX) * 6 / 11));
g.DrawString("NPSH", new Font("宋体 ", 10f), Brushes.Black, new Point(MaxX + 52, MaxY -28 - (MaxY - MinX) * 6 / 11));
}
// 画出Y轴上的分值线
private void DrawXLine()
{
Graphics g = this.CreateGraphics();
for (i = 54; i+1 > 0; i--)
{
Point px1 = new Point(MinX, MinY + (MaxY - MinY) * i / 55);
Point px2 = new Point(MaxX, MinY + (MaxY - MinY) * i / 55);
if (i % 5 == 0)
{
g.DrawLine(new Pen(Brushes.Gray, 1), px1, px2);
Point px11 = new Point(MinX-4, MinY + (MaxY - MinY) * i / 55);
Point px22 = new Point(MinX, MinY + (MaxY - MinY) * i / 55);
Point px111 = new Point(MaxX, MinY + (MaxY - MinY) * i / 55);
Point px222 = new Point(MaxX+4, MinY + (MaxY - MinY) * i / 55);
g.DrawLine(new Pen(Brushes.Black, 1), px11, px22);
g.DrawLine(new Pen(Brushes.Black, 1), px111, px222);
if (i / 5 >= 5 && i / 5 <= 10)
{
Point px1111 = new Point(MaxX+50, MinY + (MaxY - MinY) * i / 55);
Point px2222 = new Point(MaxX+50-4, MinY + (MaxY - MinY) * i / 55);
g.DrawLine(new Pen(Brushes.Black, 1), px1111, px2222);
}
}
else
{
g.DrawLine(new Pen(Brushes.Silver, 1), px1, px2);
}
}
}
//画出X轴上的分值线
private void DrawYLine()
{
Graphics g = this.CreateGraphics();
for (i = 1; i-1< 49; i++)
{
Point py1 = new Point(MinX + (MaxX - MinX) * i / 50, MinY);
Point py2 = new Point(MinX + (MaxX - MinX) * i / 50, MaxY);
if (i % 5 == 0)
{
g.DrawLine(new Pen(Brushes.Gray, 1), py1, py2);
Point py11 = new Point(MinX + (MaxX - MinX) * i / 50, MinY);
Point py22 = new Point(MinX + (MaxX - MinX) * i / 50, MaxY+4);
g.DrawLine(new Pen(Brushes.Black, 1), py11, py22);
}
else
g.DrawLine(new Pen(Brushes.Silver, 1), py1, py2);
}
}
private void DrawAllData()
{
//左边Y
Graphics g = this.CreateGraphics();
// Create solid brush.
SolidBrush BlackBrush = new SolidBrush(Color.Black);
// Create rectangle for region.
Rectangle fillRect = new Rectangle(MinX-4,MinY+(MaxY-MinY)/11*9,4,(MaxY-MinY)/11);
// Create region for fill.
Region fillRegion = new Region(fillRect);
// Fill region to screen.
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX-4, MinY+(MaxY - MinY)/11 * 7, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX - 4, MinY +(MaxY - MinY) / 11 * 3, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX - 4, MinY + (MaxY - MinY) / 11 * 1, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
//X
fillRect = new Rectangle(MinX+(MaxX-MinX)*1 /10,MaxY,(MaxX-MinX)/10,4);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX + (MaxX - MinX) * 3 / 10, MaxY, (MaxX - MinX) / 10, 4);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX + (MaxX - MinX) * 5 / 10, MaxY, (MaxX - MinX) / 10, 4);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX + (MaxX - MinX) * 7 / 10, MaxY, (MaxX - MinX) / 10, 4);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MinX + (MaxX - MinX) * 9 / 10, MaxY, (MaxX - MinX) / 10, 4);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
//Y轴右1
fillRect = new Rectangle(MaxX, MinY + (MaxY-MinY)*0/11,4,(MaxY-MinY)/11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MaxX, MinY + (MaxY - MinY) * 2 / 11, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MaxX, MinY + (MaxY - MinY) * 4 / 11, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MaxX, MinY + (MaxY - MinY) * 6 / 11, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MaxX, MinY + (MaxY - MinY) * 8 / 11, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
//Y轴右2
fillRect = new Rectangle(MaxX+50-4, MinY + (MaxY - MinY) * 6 / 11, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
fillRect = new Rectangle(MaxX+50-4, MinY + (MaxY - MinY) * 8 / 11, 4, (MaxY - MinY) / 11);
fillRegion = new Region(fillRect);
g.FillRegion(BlackBrush, fillRegion);
//Y轴功率
if (Pa.Min() < 100)
{
low1 = (int)Pa.Min() / 10 * 10;
}
if (Pa.Min() < 1000 && Pa.Min() > 100)
{
low1 = (int)Pa.Min() / 100 * 100;
}
if (Pa.Min() < 10000 && Pa.Min() > 1000)
{
low1 = (int)Pa.Min() / 1000 * 1000;
}
if (Pa.Max() < 100)
{
high1 = (int)Pa.Max() / 10 * 10+10;
}
if (Pa.Max() < 1000 && Pa.Max() > 100)
{
high1 = (int)Pa.Max() / 100 * 100 + 100;
}
if (Pa.Max() < 10000 && Pa.Max() > 1000)
{
high1 = (int)Pa.Max() / 1000 * 1000 + 1000;
}
danwei1 = (high1 - low1) / 4;
if (H.Min() > 55 && H.Max()<100)
{
low2 = 55;
high2 =80;
danwei2 = 5;
}
else
{
if (H.Min() < 100)
{
low2 = (int)H.Min() / 10 * 10;
}
if (H.Min() < 1000 && H.Min() > 100)
{
low2 = (int)H.Min() / 100 * 100;
}
if (H.Min() < 10000 && H.Min() > 1000)
{
low2 = (int)H.Min() / 1000 * 1000;
}
if (H.Max() < 100)
{
high2 = (int)H.Max() / 10 * 10 + 10;
}
if (H.Max() < 1000 && H.Max() > 100)
{
high2 = (int)H.Max() / 100 * 100 + 100;
int yushu = (int)Pax.Max() % 1000;
if (yushu > 50)
{
high3 = high3 + 100;
}
else
{
high3 = high3 + 50;
}
}
if (H.Max() < 10000 && H.Max() > 1000)
{
high2 = (int)H.Max() / 1000 * 1000;
int yushu = (int)Pax.Max() % 1000;
if (yushu > 500)
{
high3 = high3 + 1000;
}
else
{
high3 = high3 + 500;
}
}
danwei2 = (high1 - low1) / 4;
}
low3 = 0;
if (Pax.Max() < 100)
{
high3 = (int)Pax.Max() / 10 * 10 + 10;
}
if (Pax.Max() < 1000 && Pax.Max() > 100)
{
high3 = (int)Pax.Max() / 100 * 100;
int yushu = (int)Pax.Max() % 1000;
if (yushu > 500)
{
high3 = high3 + 1000;
}
else
{
high3 = high3 + 500;
}
}
if (Pax.Max() < 10000 && Pax.Max() > 1000)
{
high3 = (int)Pax.Max() / 1000 * 1000;
int yushu = (int)Pax.Max() % 1000;
if (yushu > 500)
{
high3 = high3 + 1000;
}
else
{
high3 = high3 + 500;
}
}
danwei3 = (high3 - low3) / 10;
for(int i=0;i<n;i++)
{
Paxint[i] = Convert.ToInt32((Pax[i]-low3) / (high3 - low3) * (MaxX - MinX) + MinX);
Paint[i] = Convert.ToInt32(MaxY - (Pa[i] - low1) / (high1 - low1) * (MaxY - MinY) * 5 / 11);
}
for (int i = 0; i < n; i++)
{
Rectangle rect = new Rectangle(Paxint[i] - 2, Paint[i] - 2, 4, 4);
g.DrawRectangle(new Pen(Brushes.Black, 1), rect);
}
GLS.fittingOfAPolynomial(3,Pax,Pa);
double[] m = new double[4];
m = GLS.MatrixAk;
double[] a = new double[101];
double[] ax = new double[100];
for (int i = 0; i < 100; i++)
{
ax[i] = Pax.Min() + (Pax.Max() - Pax.Min()) / 100 * i;
}
if (m.Length == 4)
{
int i = 0;
double k = Math.Round((Pax.Max() - Pax.Min()) / 100.00,2);
double pMin = Math.Round(Pax.Min(),2);
double pMax = Math.Round(Pax.Max(), 2);
for (double j = pMin; j <= pMax; j = j + k)
{
a[i] = Math.Round(m[0] + m[1] * j + m[2] * Math.Pow(j, 2.0) + m[3] * Math.Pow(j, 3.0), 2);
i++;
}
}
PointF[] Paxypoint=new PointF[100];
for (int i = 0; i < 100; i++)
{
Paxypoint[i] = new PointF(Convert.ToInt32((ax[i] - low3) / (high3 - low3) * (MaxX - MinX) + MinX),
Convert.ToInt32(MaxY - (a[i] - low1) / (high1 - low1) * (MaxY - MinY)*5/11));
}
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawCurve(new Pen(Color.Blue, 1), Paxypoint);
//Y轴扬程
for (int i = 0; i < n; i++)
{
Hxint[i] = Convert.ToInt32(Hx[i] / (high3 - low3) * (MaxX - MinX) + MinX);
Hint[i] = Convert.ToInt32(MinY+(high2-H[i])/(high2-low2)*(MaxY-MinY)*5/11);
}
for (int i = 0; i < n; i++)
{
Rectangle rect = new Rectangle(Hxint[i] - 2, Hint[i] - 2, 4, 4);
g.DrawEllipse(new Pen(Brushes.Black, 1), rect);
//g.DrawRectangle(new Pen(Brushes.Black, 1), rect);
}
GLS.fittingOfAPolynomial(3, Hx,H);
m = new double[4];
m = GLS.MatrixAk;
a = new double[101];
ax = new double[100];
for (int i = 0; i < 100; i++)
{
ax[i] = Hx.Min() + (Hx.Max() - Hx.Min()) / 100 * i;
}
if (m.Length == 4)
{
double k = (Hx.Max() - Hx.Min()) / 100;
i = 0;
for (double j = Hx.Min(); j < Hx.Max(); j = j + k)
{
a[i] = Math.Round(m[0] + m[1] * j + m[2] * Math.Pow(j, 2.0) + m[3] * Math.Pow(j, 3.0), 2);
i++;
}
}
PointF[] Hxypoint = new PointF[100];
for (int i = 0; i < 100; i++)
{
Hxypoint[i] = new PointF(Convert.ToInt32(ax[i] / (high3 - low3) * (MaxX - MinX) + MinX),
Convert.ToInt32(MinY + (high2 - a[i]) / (high2 - low2) * (MaxY - MinY) * 5 / 11));
}
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawCurve(new Pen(Color.Yellow, 1), Hxypoint);
//Y轴效率
for (int i = 0; i < n; i++)
{
Effxint[i] = Convert.ToInt32( Effx[i] / (high3 - low3) * (MaxX - MinX) + MinX);
Effint[i] = Convert.ToInt32(MaxY - (Eff[i]+10) / 110 * (MaxY - MinY));
}
for (int i = 0; i < n; i++)
{
Point point1 = new Point(Effxint[i]-2, Effint[i]+1);
Point point2 = new Point(Effxint[i]+2, Effint[i]+1);
Point point3 = new Point(Effxint[i], Effint[i]-2 );
Point[] curvePoints =
{
point1,
point2,
point3,
};
g.DrawPolygon(new Pen(Brushes.Black, 1), curvePoints);
//Rectangle rect = new Rectangle(Effxint[i] - 2, Effint[i] - 2, 4, 4);
//g.DrawRectangle(new Pen(Brushes.Black, 1), rect);
}
GLS.fittingOfAPolynomial(3, Effx, Eff);
m = new double[4];
m = GLS.MatrixAk;
a = new double[101];
ax = new double[100];
for (int i = 0; i < 100; i++)
{
ax[i] = Pax.Min() + (Effx.Max() - Effx.Min()) / 100 * i;
}
if (m.Length == 4)
{
int i = 0;
double k = (Effx.Max() - Effx.Min()) / 100;
double j = Effx.Min();
for (; j < Effx.Max(); j = j + k)
{
a[i] = Math.Round(m[0] + m[1] * j + m[2] * Math.Pow(j, 2.0) + m[3] * Math.Pow(j, 3.0), 2);
i++;
}
}
PointF[] Effxypoint = new PointF[100];
for (int i= 0; i < 100; i++)
{
Effxypoint[i] = new PointF(Convert.ToInt32(ax[i] / (high3 - low3) * (MaxX - MinX) + MinX), Convert.ToInt32(MaxY - (a[i] + 10) / 110 * (MaxY - MinY)));
}
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawCurve(new Pen(Color.Red, 1), Effxypoint);
//Y轴NPSH*/
}
}
}