Page 1 of 1
Draw line at runtime
Posted: Fri Apr 27, 2018 6:21 am
by Prandl33
Hello,
it is possible to render a line at runtime, as shown below, on a page.
After loading the mrt, I want to draw the line before I compile the report.
Code: Select all
private void SetLineOnPage(StiReport report) {
StiPage page1= (StiPage) report.GetComponentByName("Page1");
StiVerticalLinePrimitive lineVertikal;
lineVertikal = new Stimulsoft.Report.Components.StiVerticalLinePrimitive();
lineVertikal.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(24, 1, 0.0254, 16);
lineVertikal.Color = System.Drawing.Color.Black;
Guid guid = Guid.NewGuid();
lineVertikal.Guid = guid.ToString();
lineVertikal.Name = "LineVertikalDick";
lineVertikal.Size = 3F;
lineVertikal.EndCap = new StiCap(10, Stimulsoft.Base.Drawing.StiCapStyle.None, 10, true, System.Drawing.Color.Black);
lineVertikal.Interaction = null;
lineVertikal.StartCap = new StiCap(10, Stimulsoft.Base.Drawing.StiCapStyle.None, 10, true, System.Drawing.Color.Black);
lineVertikal.Page = page1;
lineVertikal.Parent = page1;
page1.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
lineVertikal});
}
}
This way don't work. How can I solve this problem.
Thank you
Re: Draw line at runtime
Posted: Mon Apr 30, 2018 4:49 am
by Prandl33
Hello,
now I found out that the following code works in the OnPageBeforePrint event.
Code: Select all
private void SetLinesHorizontal(StiPage page) {
StiHorizontalLinePrimitive lineHorizontal;
lineHorizontal = new Stimulsoft.Report.Components.StiHorizontalLinePrimitive();
lineHorizontal.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(2, 2, 6, 0.5);
lineHorizontal.Color = System.Drawing.Color.Red;
lineHorizontal.Name = "LineHorizontal";
lineHorizontal.Size = 3F;
page.Components.Add(lineHorizontal);
}
But the same Code for a vertical line doesn't work.
For example like this:
Code: Select all
private void SetLinesVertikal(StiPage page) {
StiVerticalLinePrimitive lineVertical;
lineVertical = new Stimulsoft.Report.Components.StiVerticalLinePrimitive();
lineVertical.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3, 3, 0.5, 6.4);
lineVertical.Color = System.Drawing.Color.Red;
lineVertical.Name = "LineVertical";
lineVertical.Size = 3F;
page.Components.Add(lineVertical);
}
Re: Draw line at runtime
Posted: Mon Apr 30, 2018 5:48 am
by Edward
Hi Prandl,
The easy way I always check in order to understand the behaviour any specific component, I create that simple shape or any other component and go to the Code tab in the .Net designer, where I can see the behaviour of any specific component. This is a similar case. I found out, that the start point and end point properties are required in that case as well! Please check it out:
Code: Select all
//
// VerticalLinePrimitive1
//
this.VerticalLinePrimitive1 = new Stimulsoft.Report.Components.StiVerticalLinePrimitive();
this.VerticalLinePrimitive1.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3.4, 0.2, 0.0254, 3.4);
this.VerticalLinePrimitive1.Color = System.Drawing.Color.Black;
this.VerticalLinePrimitive1.Guid = "78e1030a07304c9fbda86e15b6c468bc";
this.VerticalLinePrimitive1.Name = "VerticalLinePrimitive1";
this.VerticalLinePrimitive1.EndCap = new Stimulsoft.Base.Drawing.StiCap(10, Stimulsoft.Base.Drawing.StiCapStyle.None, 10, true, System.Drawing.Color.Black);
this.VerticalLinePrimitive1.Interaction = null;
this.VerticalLinePrimitive1.StartCap = new Stimulsoft.Base.Drawing.StiCap(10, Stimulsoft.Base.Drawing.StiCapStyle.None, 10, true, System.Drawing.Color.Black);
//
// StartPointPrimitive1
//
this.StartPointPrimitive1 = new Stimulsoft.Report.Components.StiStartPointPrimitive();
this.StartPointPrimitive1.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3.4, 0.2, 0, 0);
this.StartPointPrimitive1.Name = "StartPointPrimitive1";
this.StartPointPrimitive1.ReferenceToGuid = "78e1030a07304c9fbda86e15b6c468bc";
this.StartPointPrimitive1.Interaction = null;
//
// EndPointPrimitive1
//
this.EndPointPrimitive1 = new Stimulsoft.Report.Components.StiEndPointPrimitive();
this.EndPointPrimitive1.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3.4, 3.6, 0, 0);
this.EndPointPrimitive1.Name = "EndPointPrimitive1";
....
this.Page1.Components.AddRange(new Stimulsoft.Report.Components.StiComponent[] {
this.VerticalLinePrimitive1,
this.StartPointPrimitive1,
this.EndPointPrimitive1});
so the answer here is that you would need to take care of the 'start' and the 'end' points of the vertical line primitive!
Thank you,
Edward
Re: Draw line at runtime
Posted: Mon Apr 30, 2018 6:15 am
by Prandl33
Hello Edward!
I also look at the code, what was generated there.
At this moment I checked that the start point and the entpoint have to be defined with a vertical line.
Thank you very much!
Now it works fine:
Code: Select all
StiVerticalLinePrimitive lineVertical = new Stimulsoft.Report.Components.StiVerticalLinePrimitive();
lineVertical.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3, 3, 0.5, 6.4);
lineVertical.Color = System.Drawing.Color.Red;
Guid guid = Guid.NewGuid();
lineVertical.Guid = guid.ToString();
lineVertical.Name = "LineVertical";
lineVertical.Size = 3F;
page.Components.Add(lineVertical);
StiStartPointPrimitive startPoint = new Stimulsoft.Report.Components.StiStartPointPrimitive();
startPoint.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3, 3, 0, 0);
startPoint.Name = "StartPoint";
startPoint.ReferenceToGuid = guid.ToString();
page.Components.Add(startPoint);
StiEndPointPrimitive endPoint = new Stimulsoft.Report.Components.StiEndPointPrimitive();
endPoint.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(3, 9.4, 0, 0);
endPoint.Name = "EndPoint";
endPoint.ReferenceToGuid = guid.ToString();
page.Components.Add(endPoint);
Re: Draw line at runtime
Posted: Wed May 02, 2018 9:00 am
by HighAley
Hello.
We are always glad to help you.
Let us know if you need our help.
Thank you.