Changed to support VGOutput interface & various bugs fixed.
Scalable form to display an XYPlot
This commit is contained in:
56
PROMS/XYPlots/frmXYPlot.cs
Normal file
56
PROMS/XYPlots/frmXYPlot.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Printing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using VG;
|
||||
using XYPlots;
|
||||
|
||||
namespace XYPlots
|
||||
{
|
||||
public partial class frmXYPlot : Form
|
||||
{
|
||||
private string _XYPlot;
|
||||
private string _Title;
|
||||
public frmXYPlot(string title,string xyPlot)
|
||||
{
|
||||
InitializeComponent();
|
||||
_XYPlot =xyPlot;
|
||||
_Title = title;
|
||||
}
|
||||
private void pnl_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
|
||||
XYPlots.XYPlot myPlot = new XYPlots.XYPlot(_XYPlot);
|
||||
myPlot.SetMargins(.75F, .5F, .25F, .75F);
|
||||
float scaleX = pnl.Width / myPlot.Width;
|
||||
float scaleY = pnl.Height / myPlot.Height;
|
||||
float scale = scaleX > scaleY ? scaleY : scaleX;
|
||||
e.Graphics.ScaleTransform(scale, scale);
|
||||
myPlot.Process(new VGOut_Graphics(e.Graphics));
|
||||
}
|
||||
private void pnl_Resize(object sender, EventArgs e)
|
||||
{
|
||||
pnl.Invalidate();
|
||||
}
|
||||
private void frmXYPlot_Load(object sender, EventArgs e)
|
||||
{
|
||||
Text = _Title;
|
||||
XYPlots.XYPlot myPlot = new XYPlots.XYPlot(_XYPlot);
|
||||
myPlot.SetMargins(.75F, .5F, .25F, .75F);
|
||||
float scaleX = pnl.Width / myPlot.Width;
|
||||
float scaleY = pnl.Height / myPlot.Height;
|
||||
float scale = scaleX > scaleY ? scaleY : scaleX;
|
||||
int height = (int)(Height - pnl.Height + pnl.Height * scale / scaleY);
|
||||
int width = (int)(Width - pnl.Width + pnl.Width * scale / scaleX);
|
||||
Size = new Size(width, height);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user