using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using GDIDB;
using ZedGraph;
namespace ZedGraphTest
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private DBGraphics memGraphics;
/// <summary>
///
/// </summary>
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
memGraphics = new DBGraphics();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(640, 438);
this.Name = "Form1";
this.Text = "Form1";
this.Resize += new System.EventHandler(this.Form1_Resize);
this.Load += new System.EventHandler(this.Form1_Load);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
/// <summary>
///
/// </summary>
protected GraphPane myPane;
private void Form1_Load(object sender, System.EventArgs e)
{
memGraphics.CreateDoubleBuffer(this.CreateGraphics(),
this.ClientRectangle.Width, this.ClientRectangle.Height);
myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
"Wacky Widget Company\nProduction Report",
"Time, Days\n(Since Plant Construction Startup)",
"Widget Production\n(units/hour)" );
SetSize();
double[] x = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
double[] y = { 20, 10, 50, 25, 35, 75, 90, 40, 33, 50 };
CurveItem curve;
curve = myPane.AddCurve( "Larry", x, y, Color.Green, SymbolType.Circle );
curve.Line.Width = 1.5F;
curve.Line.Fill = new Fill( Color.White, Color.FromArgb( 60, 190, 50), 90F );
curve.Line.IsSmooth = true;
curve.Line.SmoothTension = 0.6F;
curve.Symbol.Fill = new Fill( Color.White );
curve.Symbol.Size = 12;
double[] x3 = { 150, 250, 400, 520, 780, 940 };
double[] y3 = { 5.2, 49.0, 33.8, 88.57, 99.9, 36.8 };
curve = myPane.AddCurve( "Moe", x3, y3, Color.FromArgb( 200, 55, 135), SymbolType.Triangle );
curve.Line.Width = 1.5F;
//curve.Line.IsSmooth = true;
curve.Symbol.Fill = new Fill( Color.White );
curve.Line.Fill = new Fill( Color.White, Color.FromArgb( 230, 145, 205), 90F );
curve.Symbol.Size = 12;
double[] x2 = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
double[] y2 = { 40, 60, 70, 80, 100, 110, 113, 105, 95, 75 };
curve = myPane.AddBar( "Curly", x2, y2, Color.RoyalBlue );
myPane.ClusterScaleWidth = 100;
//curve.Bar.Fill = new Fill( Color.Blue );
//curve.Symbol.Size = 12;
myPane.PaneFill = new Fill( Color.WhiteSmoke, Color.Lavender, 0F );
myPane.AxisFill = new Fill( Color.White, Color.FromArgb( 255, 255, 166), 90F );
myPane.XAxis.IsShowGrid = true;
myPane.XAxis.ScaleFontSpec.Angle = 0;
myPane.YAxis.IsShowGrid = true;
myPane.YAxis.ScaleFontSpec.Angle = 90;
myPane.YAxis.Max = 120;
TextItem text = new TextItem("First Prod\n21-Oct-93", 175F, 80.0F );
text.AlignH = AlignH.Center;
text.AlignV = AlignV.Bottom;
text.FontSpec.Fill = new Fill( Color.White, Color.PowderBlue, 45F );
myPane.TextList.Add( text );
ArrowItem arrow = new ArrowItem( Color.Black, 12F, 175F, 77F, 100F, 45F );
arrow.CoordinateFrame = CoordType.AxisXYScale;
myPane.ArrowList.Add( arrow );
text = new TextItem("Upgrade", 700F, 50.0F );
text.FontSpec.Angle = 90;
text.FontSpec.FontColor = Color.Black;
text.AlignH = AlignH.Right;
text.AlignV = AlignV.Center;
text.FontSpec.Fill.IsFilled = false;
//text.FontSpec.Fill = new Fill( Color.White, Color.LightGoldenrodYellow, -45F );
text.FontSpec.IsFramed = false;
myPane.TextList.Add( text );
arrow = new ArrowItem( Color.Black, 15, 700, 53, 700, 80 );
arrow.CoordinateFrame = CoordType.AxisXYScale;
arrow.PenWidth = 2.0F;
myPane.ArrowList.Add( arrow );
text = new TextItem("Confidential", 0.8F, -0.03F );
text.CoordinateFrame = CoordType.AxisFraction;
text.FontSpec.Angle = 15.0F;
text.FontSpec.FontColor = Color.Red;
text.FontSpec.IsBold = true;
text.FontSpec.Size = 16;
text.FontSpec.IsFramed = false;
text.FontSpec.FrameColor = Color.Red;
text.FontSpec.Fill.IsFilled = false;
text.AlignH = AlignH.Left;
text.AlignV = AlignV.Bottom;
myPane.TextList.Add( text );
myPane.AxisChange( this.CreateGraphics() );
}
/// <summary>
///
/// </summary>
/// <param name="pevent"></param>
protected override void OnPaintBackground(PaintEventArgs pevent)
{
}
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
SolidBrush brush = new SolidBrush( Color.Gray );
if ( memGraphics.CanDoubleBuffer() )
{
// Fill in Background (for effieciency only the area that has been clipped)
memGraphics.g.FillRectangle( new SolidBrush(SystemColors.Window),
e.ClipRectangle.X, e.ClipRectangle.Y,
e.ClipRectangle.Width, e.ClipRectangle.Height);
// Do our drawing using memGraphics.g instead e.Graphics
memGraphics.g.FillRectangle( brush, this.ClientRectangle );
myPane.Draw( memGraphics.g );
// Render to the form
memGraphics.Render( e.Graphics );
}
else // if double buffer is not available, do without it
{
e.Graphics.FillRectangle( brush, this.ClientRectangle );
myPane.Draw( e.Graphics );
}
}
private void Form1_Resize(object sender, System.EventArgs e)
{
memGraphics.CreateDoubleBuffer(this.CreateGraphics(),
this.ClientRectangle.Width, this.ClientRectangle.Height);
SetSize();
Invalidate();
}
private void SetSize()
{
Rectangle paneRect = this.ClientRectangle;
paneRect.Inflate( -10, -10 );
this.myPane.PaneRect = paneRect;
}
}
}