Page 1 of 1
Questions on chart area related to a custom Y-axis
Posted: Thu Apr 29, 2010 5:57 am
by 13051032
1. How can I highlight the chart area border of a custom vertical axis as shown in the attached image at runtime?
2. Is there a way to put buttons similar to form ControlBox buttons (also shown in the attached image at the top right corner for each of the custom vertical axis) and have these buttons trigger events (similar behavior to the controlbox, but is somewhat customized). Please note that these Charts and all related buttons are created and placed at runtime.
Re: Questions on chart area related to a custom Y-axis
Posted: Fri Apr 30, 2010 10:05 am
by 10050769
Hello asupriya,
1. How can I highlight the chart area border of a custom vertical axis as shown in the attached image at runtime?
I have made a simple project that I think its behaviour is as you want. Please, see next code, and check if works as you want.
Code: Select all
private Steema.TeeChart.Styles.FastLine[] fs = new Steema.TeeChart.Styles.FastLine[7];
private Steema.TeeChart.Axis[] myAxis = new Steema.TeeChart.Axis[7];
private Steema.TeeChart.ChartController tChartController1;
bool drawrectangle;
private int X0, Y0, X1, Y1;
private void InitializeChart()
{
// this.WindowState = FormWindowState.Normal;
this.AutoScroll = true;
//Chart object
tChartController1 = new Steema.TeeChart.ChartController();
tChart1.AllowDrop = true;
tChart1.Aspect.View3D = false;
tChart1.Dock = DockStyle.Top;
tChart1.Aspect.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
tChart1.Aspect.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
tChartController1.Chart = tChart1;
//Now cursor tool
tChart1.Panel.MarginLeft = 30;
//Now fast lines
for (int i = 0; i <= 6; i++)
{
//fastlines
fs[i] = new Steema.TeeChart.Styles.FastLine(tChart1.Chart);
fs[i].FillSampleValues(1800);
fs[i].DrawAllPoints = false;
//axis
if (i == 0)
{
myAxis[i]= new Steema.TeeChart.Axis(tChart1.Chart);
myAxis[i].StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
myAxis[i].StartPosition = 0;
myAxis[i].EndPosition = 55;
myAxis[i].Title.Text = "Axis_" + i;
myAxis[i].Title.TextAlign = StringAlignment.Near;
myAxis[i].Automatic = true;
fs[i].CustomVertAxis = myAxis[i];
tChart1.Axes.Custom.Add( myAxis[i]);
}
else
{
myAxis[i] = new Steema.TeeChart.Axis(tChart1.Chart);
myAxis[i].Title.Text = "Axis_" + i;
myAxis[i].Title.TextAlign = StringAlignment.Near;
myAxis[i].Automatic = true;
myAxis[i].StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
tChart1.Axes.Custom.Add( myAxis[i]);
myAxis[i].StartPosition = myAxis[i - 1].EndPosition + 5;
myAxis[i].EndPosition = myAxis[i].StartPosition + 50;
fs[i].CustomVertAxis = myAxis[i];
}
}
this.Controls.Add(tChartController1);
tChart1.MouseUp += new MouseEventHandler(tChart1_MouseUp);
tChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart1_AfterDraw);
tChart1.Draw();
}
void tChart1_MouseUp(object sender, MouseEventArgs e)
{
Steema.TeeChart.TChart tmpChart = (Steema.TeeChart.TChart)sender;
Steema.TeeChart.Axis dragDropAxis;
Rectangle rect = tChart1.Chart.ChartRect;
//int tmp = this.AutoScrollPosition.Y;
for (int i = 0; i < tmpChart.Axes.Custom.Count; i++)
{
dragDropAxis = tmpChart.Axes.Custom[i];
if (!dragDropAxis.Horizontal &&((dragDropAxis.IStartPos <= e.Y) && (dragDropAxis.IEndPos >= e.Y)))
{
drawrectangle = true;
Y0 = dragDropAxis.CalcYPosValue(dragDropAxis.Minimum);
Y1 = dragDropAxis.CalcYPosValue(dragDropAxis.Maximum);
X1 = rect.Right;
X0 = rect.Left;
}
}
tChart1.Refresh();
}
void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
if ((X0 != -1) && (Y0 != -1))
{
if (drawrectangle)
{
g.Brush.Visible = false;
g.Pen.Color = Color.Red;
g.Pen.Width = 3;
g.Rectangle(X0, Y0, X1, Y1);
}
}
else
{
ResetCoords();
}
}
private void ResetCoords()
{
X0 = -1;
Y0 = -1;
Y1 = -1;
X1 = -1;
}
2. Is there a way to put buttons similar to form ControlBox buttons (also shown in the attached image at the top right corner for each of the custom vertical axis) and have these buttons trigger events (similar behavior to the controlbox, but is somewhat customized). Please note that these Charts and all related buttons are created and placed at runtime.
You need to add those buttons to a TChart instead of a Form. The chart being button's parent shouldn't affect their functionality. Regarding button's positioning, you already know regions positions and dimensions due to axes positioning.
Re: Questions on chart area related to a custom Y-axis
Posted: Thu May 13, 2010 5:39 am
by 13051032
Just tried your example and it worked perfectly. Thanks Sandra.