Hi Henrique,
I was able to reproduce the observed behavior. It is caused because after adding of the chart elements are marked for update. This can be avoided by forcing the layout with the following code:
Actually, there is a better way to calculate value:
private
void
RadChartView1_MouseDown(
object
sender, MouseEventArgs e)
{
object
hValue =
this
.GetVerticalAxisValueFromMouse(e);
object
vValue =
this
.GetHorizontalAxisValueFromMouse(e);
CreateVerticalAnnotation(vValue);
CreateHorizontalAnnotation(hValue);
}
private
object
GetVerticalAxisValueFromMouse(MouseEventArgs e)
{
LinearAxis axis = radChartView1.Axes[1]
as
LinearAxis;
double
delta = axis.ActualRange.Maximum - axis.ActualRange.Minimum;
double
totalHeight = axis.Model.LayoutSlot.Height;
double
ratio = 1 - (e.Location.Y -
this
.radChartView1.Area.View.Viewport.Y - axis.Model.LayoutSlot.Y) / totalHeight;
double
value = axis.ActualRange.Minimum + delta * ratio;
return
value;
}
private
object
GetHorizontalAxisValueFromMouse(MouseEventArgs e)
{
DateTimeContinuousAxis axis = radChartView1.Axes[0]
as
DateTimeContinuousAxis;
long
delta = axis.ActualRange.Maximum.Ticks - axis.ActualRange.Minimum.Ticks;
double
totalWidth = axis.Model.LayoutSlot.Width;
double
ratio = (e.Location.X -
this
.radChartView1.View.Viewport.X - axis.Model.LayoutSlot.X) / totalWidth;
double
value = axis.ActualRange.Minimum.Ticks + delta * ratio;
return
new
DateTime((
long
)value);
}
private
void
CreateHorizontalAnnotation(
object
value)
{
var annotation =
new
CartesianGridLineAnnotation
{
Axis = radChartView1.Axes[1]
as
CartesianAxis,
Value = value,
BorderColor = Color.Red,
BorderDashStyle = DashStyle.Solid,
BorderWidth = 1
};
this
.radChartView1.Annotations.Add(annotation);
}
private
void
CreateVerticalAnnotation(
object
value)
{
var annotation =
new
CartesianGridLineAnnotation
{
Axis = radChartView1.Axes[0]
as
DateTimeContinuousAxis,
Value = value,
BorderColor = Color.Blue,
BorderDashStyle = DashStyle.Solid,
BorderWidth = 1
};
this
.radChartView1.Annotations.Add(annotation);
}
I hope this will be useful.
Regards,
Dimitar
Progress Telerik