Page 1 of 1
Auto Adjust Axis's Label visible when custom label
Posted: Mon Jan 16, 2012 7:51 am
by 13049721
I want to realize fellow function using Tchart version:3.5.3225.32185:
when user change the chart window's size,the axis's label can adjust their visible
when all labels are custom label.
My Axis's label can't adjust its label's visible when the chart window's size have been changed.The axis's labels will overlap and it is unacceptable!
please look this attachment.
The custom label is added like this:
Code: Select all
double x=0;
AxisLabelItem xLabel = tChart1.Axes.Bottom.Labels.Items.Add(Convert.ToDouble(x.ToString("E3")));
xLabel.Transparent = true;
xLabel.Width = 90;
xLabel.Value = x;
for example: the x-axis labels:0.00,1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00.
All label will displayed when max window status,but when user change the chart window's size,there should be only show 0.00,2.00,4.00,6.00,8.00,10.00,The other label should be hidden.
I know the Feature list have realize this function,but my project can't and I don't know what causes this.
I want to know:How can I realize this?Is there have something effective for this or a property can do this?
Re: Auto Adjust Axis's Label visible when custom label
Posted: Mon Jan 16, 2012 11:44 am
by 10050769
Hello sim,
I can not reproduce your problem using last version 3 of TeeChart.Net and next code:
Code: Select all
Steema.TeeChart.Styles.Line line1;
private void InitializeChart()
{
line1 = new Line(tChart1.Chart);
tChart1.Dock = DockStyle.Fill;
Random rnd = new Random();
line1.Add(1.00E3,rnd.Next(100));
line1.Add(1.10E3,rnd.Next(100));
line1.Add(2.00E3,rnd.Next(100));
line1.Add(3.00E3, rnd.Next(100));
line1.Add(4.00E3, rnd.Next(100));
line1.Add(5.00E3, rnd.Next(100));
line1.Add(6.00E3, rnd.Next(100));
line1.Add(7.00E3, rnd.Next(100));
line1.Add(8.00E3, rnd.Next(100));
line1.Add(9.00E3, rnd.Next(100));
line1.Add(10.00E3, rnd.Next(100));
tChart1.Axes.Bottom.Labels.ValueFormat = "#.0 x10 E+0";
}
Can you tell us if using next code, your problem appear? If problem doesn't appear, please send us a simple project because we can try to solve your problem here. On the other hand, I have seen that you doesn't have the last maintenace release of TeeChart.Net v3. I recommend you, update your version of TeeChart.Net and check again if your problem persist. You can update your version in
costumer page
Thanks,
Re: Auto Adjust Axis's Label visible when custom label
Posted: Wed Jan 18, 2012 9:47 am
by 13049721
I have upload my project in attachment.your code is not what i mean.this is my code:
Code: Select all
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Steema.TeeChart.Styles;
using Steema.TeeChart;
namespace teechartScaleOverlapping
{
public partial class Form1 : Form
{
Steema.TeeChart.Styles.Line line1;
Steema.TeeChart.TChart tChart1;
public Form1()
{
InitializeComponent();
tChart1 = new Steema.TeeChart.TChart();
this.panel1.Controls.Add(tChart1);
line1 = new Line(tChart1.Chart);
tChart1.Dock = DockStyle.Fill;
Random rnd = new Random();
line1.Add(1.00, rnd.Next(100));
line1.Add(2.00, rnd.Next(100));
line1.Add(3.00, rnd.Next(100));
line1.Add(4.00, rnd.Next(100));
line1.Add(5.00, rnd.Next(100));
line1.Add(6.00, rnd.Next(100));
line1.Add(7.00, rnd.Next(100));
line1.Add(8.00, rnd.Next(100));
line1.Add(9.00, rnd.Next(100));
line1.Add(10.00, rnd.Next(100));
tChart1.Axes.Bottom.Labels.Items.Clear();
for (int i = 0; i < 10; i++)//build
{
double x = i;
AxisLabelItem xLabel = tChart1.Axes.Bottom.Labels.Items.Add(Convert.ToDouble(x.ToString("E3")));
xLabel.Width = 90;
xLabel.Text = x.ToString("E3");
xLabel.Value = x;
}
}
}
}
the above code can reproduce my issues,please help me,thanks!
I have download all version and installed,but I didn't found the last version: 3.5.3700.
In TeeChartNET3UpdateBuild file,there is no Tchart.dll for .net3.5(3.jpg),but my project is .net3.5.Can we user tchart.dll for .net2.0?
I have upload the list version in my customer page(1.jpg),please tell me which file is the last version,thanks?
My project must be use Custom label,reason:
http://www.teechart.net/support/viewtop ... =4&t=12864.
Why the custom labels can not auto Adjust Axis's Label visible?
Re: Auto Adjust Axis's Label visible when custom label
Posted: Thu Jan 19, 2012 11:44 am
by 10050769
Hello Sim,
In TeeChartNET3UpdateBuild file,there is no Tchart.dll for .net3.5(3.jpg),but my project is .net3.5.Can we user tchart.dll for .net2.0?
Yes, you can use .net2.0 dll without problems, in your projects made in .net3.5
I have upload the list version in my customer page(1.jpg),please tell me which file is the last version,thanks?
In the customer page you can see TeeChartNET3UpdateBuild, this is the last version 3 update of Febrary, 2010, but before download and Install the update, you need download last version 3 of June, 2009 that in your case you need download TeeChartNet3Vnet2008 and install it. After you can install the TeeChartNet3UpdateBuild
Why the custom labels can not auto Adjust Axis's Label visible?
I recommend that in your case take a look in this
thread where is discussing different ways to treat the problem of overlap of labels
I hope will helps.
Thanks,
Re: Auto Adjust Axis's Label visible when custom label
Posted: Mon Jan 30, 2012 3:14 am
by 13049721
I have resolve this like this:
Code: Select all
void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
//the current Label will be hidden when it is overlapped with its previous labels.
//Get the axis
Steema.TeeChart.Axis xAxis = tChart1.Axes.Bottom;
Steema.TeeChart.Axis yAxis = tChart1.Axes.Left;
xAxis.Labels.Items[0].Visible = true;
string visibleInfo = xAxis.Labels.Items[0].Text+":true"+Environment.NewLine;
for (int i = 1; i < xAxis.Labels.Items.Count; i++)
{
var currentLabel = xAxis.Labels.Items[i];
SizeF currentSize = tChart1.Graphics3D.MeasureString(xAxis.Labels.Font, currentLabel.Text);
Rectangle currentRect = new Rectangle(xAxis.CalcXPosValue(currentLabel.Value), xAxis.CalcYPosValue(currentLabel.Value), (int)currentSize.Width, (int)currentSize.Height);
AxisLabelItem lastVisibleLabel = xAxis.Labels.Items.Where(x => x.Visible && IndexOfLabel(xAxis, x.Text) < i).LastOrDefault();//get the nearest visible Label before current Label
if (lastVisibleLabel == null)
{
currentLabel.Visible = true;
continue;
}
SizeF lastVisibleSize = tChart1.Graphics3D.MeasureString(xAxis.Labels.Font, lastVisibleLabel.Text);
Rectangle lasyVisibleRect = new Rectangle(xAxis.CalcXPosValue(lastVisibleLabel.Value), xAxis.CalcYPosValue(lastVisibleLabel.Value), (int)lastVisibleSize.Width, (int)lastVisibleSize.Height);
if (lasyVisibleRect.X + lastVisibleLabel.Width >= currentRect.X)
{
currentLabel.Visible = false;
}
else
{
currentLabel.Visible = true;
}
visibleInfo += xAxis.Labels.Items[i].Text + currentLabel.Visible + Environment.NewLine;
}
tChart1.Update();
}
private int IndexOfLabel(Axis axis, string p)
{
var labelArray = axis.Labels.Items;
for (int i = 0; i < labelArray.Count; i++)
{
if (labelArray[i].Text == p)
{
return i;
}
}
return -1;
}
but this will refresh chartView twice,because I have Refresh after AfterDraw event!I did use AfterDraw event because the tChart1.SizeChanged() and tChart1.Resize() can not Calc correct XPosValue and Calc correct YPosValue.
I have uplaod my test project,please check this.
AfterDraw(),SizeChanged() and Resize() have been contained in this project.
please run project ,drag window to a small window,then double click window's hander to maximize window(2.jpg),the Labels don't adjust correctly for SizeChanged() and Resize() .
And then double click window's hander to restore the small window status(3.jpg),the Labels don't adjust correctly for SizeChanged() and Resize().
I don't know what happened.
do you know why SizeChanged and Resize can not do this or there have any other event can do this and not refresh ChartView twice?thanks.
Re: Auto Adjust Axis's Label visible when custom label
Posted: Tue Jan 31, 2012 4:55 pm
by 10050769
Hello sim,
Thanks for your project, but I can not run the project here, seems that the error is in line "xAxis.Labels.Items.Where(x => x.Visible && IndexOfLabel(xAxis, x.Text) < i).LastOrDefault();//get the nearest visible Label before current Label". Can you please send a simple project that we can run as is, here or explain how we can execute this project to check your problem exactly here.
Thanks,
Re: Auto Adjust Axis's Label visible when custom label
Posted: Thu Feb 02, 2012 6:35 am
by 13049721
May be your Teechart version is defferent with mine.My version is 3.5.3225.32185.I have download the project and add reference: Teechart 3.5.3225.32185. The project run ok.thanks.
Re: Auto Adjust Axis's Label visible when custom label
Posted: Fri Feb 03, 2012 4:24 pm
by 10050769
Hello sim,
Can you tell us if you have tested your project, using last version 3 of TeeChartFor.Net?
Thanks,