using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1


{
public partial class Form1 : Form

{
private double a, b, c, d;
private Graphics paper;
private Pen pen = new Pen(Color.Black);

public Form1()

{
InitializeComponent();
}

private void trackBarA_Scroll(object sender, EventArgs e)

{
DrawGraph();
}

private void trackBarB_Scroll(object sender, EventArgs e)

{
DrawGraph();
}

private void trackBarC_Scroll(object sender, EventArgs e)

{
DrawGraph();
}

private void trackBarD_Scroll(object sender, EventArgs e)

{
DrawGraph();
}

private void DrawGraph()

{
paper = pictureBox1.CreateGraphics();
a = trackBarA.Value;
labelA.Text = "a=" + Convert.ToString(a);
b = trackBarB.Value;
labelB.Text = "b=" + Convert.ToString(b);
c = trackBarC.Value;
labelC.Text = "c=" + Convert.ToString(c);
d = trackBarD.Value;
labelD.Text = "d=" + Convert.ToString(d);
paper.Clear(Color.White);
Draw();
}

private void Draw()

{
double x, y, nextX, nextY;
int xPixel, yPixel, nextXPixel, nextYPixel;
for (xPixel = 0; xPixel <= pictureBox1.Width; xPixel++)

{
x = ScaleX(xPixel);
y = TheFunction(x);
yPixel = ScaleY(y);
nextXPixel = xPixel + 1;
nextX = ScaleX(nextXPixel);
nextY = TheFunction(nextX);
nextYPixel = ScaleY(nextY);
paper.DrawLine(pen, xPixel, yPixel, nextXPixel, nextYPixel);
}
}

private double TheFunction(double x)

{
return a * x * x * x + b * x * x + c * x + d;
}

private double ScaleX(int xPixel)

{
double xStart = -5, xEnd = 5;
double xScale = pictureBox1.Width / (xEnd - xStart);
return (xPixel - (pictureBox1.Width / 2)) / xScale;
}

private int ScaleY(double y)

{
double yStart = -5, yEnd = 5;
int pixelCoord;
double yScale = pictureBox1.Height / (yEnd - yStart);
pixelCoord = (int)(-y * yScale) + (int)(pictureBox1.Height / 2);
return pixelCoord;
}
}
}
posted @
2007-04-16 18:07
齐心
Views(
583)
Comments()
收藏
举报