private void EndAddElement(Rectangle selectionRectangle) { BaseElement el; switch (Document.ElementType) { case ElementType.Rectangle: el = new RectangleElement(selectionRectangle); break; case ElementType.RectangleNode: el = new RectangleNode(selectionRectangle); break; case ElementType.Ellipse: el = new EllipseElement(selectionRectangle); break; case ElementType.EllipseNode: el = new EllipseNode(selectionRectangle); break; case ElementType.CommentBox: el = new CommentBoxElement(selectionRectangle); break; default: el = new RectangleNode(selectionRectangle); break; } Document.AddElement(el); Document.Action = DesignerAction.Select; }
private void UpdatePosition() { Point positionConnectPoint; if ((!ViewModel.Node.IsCollapse) || (ViewModel.Node.IsCollapse && this.ViewModel.Name == "Output")) { positionConnectPoint = EllipseElement.TranslatePoint(new Point(EllipseElement.Width / 2, EllipseElement.Height / 2), this); NodesCanvas NodesCanvas = MyUtils.FindParent <NodesCanvas>(this); positionConnectPoint = this.TransformToAncestor(NodesCanvas).Transform(positionConnectPoint); //positionConnectPoint = positionConnectPoint.Division(this.ViewModel.NodesCanvas.Scale.Value); } else { positionConnectPoint = this.ViewModel.Node.Output.PositionConnectPoint; } if (this.ViewModel.Name == "Output") { this.ViewModel.NodesCanvas.LogDebug(positionConnectPoint.ToString()); } this.ViewModel.PositionConnectPoint = positionConnectPoint; }
public void EllipseIsCreatedWithDefaults() { var sut = new EllipseElement(); Assert.Equal(ZPLForgeDefaults.Elements.Ellipse.BorderColor, sut.BorderColor); Assert.Equal(ZPLForgeDefaults.Elements.Ellipse.BorderThickness, sut.BorderThickness); Assert.Equal(ZPLForgeDefaults.Elements.Ellipse.Height, sut.Height); Assert.Equal(ZPLForgeDefaults.Elements.Ellipse.Width, sut.Width); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var requestedElementType = value.ToString(); CardElement element = null; switch (requestedElementType) { case "Text": element = new TextElement { Text = "New text", TextColor = Colors.Black, TextSize = 12 }; break; case "Rectangle": element = new RectangleElement { BackgroundColor = Colors.White, BorderColor = Colors.Black, BorderWidth = 1 }; break; case "Ellipse": element = new EllipseElement { BackgroundColor = Colors.White, BorderColor = Colors.Black, BorderWidth = 1 }; break; case "Image": element = new ImageElement { ImageSource = "Image" }; break; default: throw new InvalidOperationException("Unknown element type requested"); } var offset = parameter != null ? (Point)parameter : new Point(10, 10); element.Left = (int)offset.X; element.Top = (int)offset.Y; element.Width = 120; element.Height = 24; return(element); }
public void AddEllipse(EllipseElement ellipse) { ellipse.ParentCoordinate = imageElement.coordinate; ellipse.ParentElement = imageElement; elements.Add(ellipse); baseElements.Add(ellipse); baseElements.Add(ellipse.leftTopPoint); baseElements.Add(ellipse.leftBottomPoint); baseElements.Add(ellipse.rightTopPoint); baseElements.Add(ellipse.rightBottomPoint); baseElements.Sort(); }
void UpdatePosition() { Point positionConnectPoint = EllipseElement.TranslatePoint(new Point(EllipseElement.Width / 2, EllipseElement.Height / 2), this); ViewNodesCanvas NodesCanvas = MyUtils.FindParent <ViewNodesCanvas>(this); if (NodesCanvas == null) { return; } positionConnectPoint = this.TransformToAncestor(NodesCanvas).Transform(positionConnectPoint); this.ViewModel.PositionConnectPoint = positionConnectPoint.Division(this.ViewModel.NodesCanvas.Scale.Value); }
private void Button_Click(object sender, RoutedEventArgs e) { var random = new Random(); for (var i = 0; i < 20; i++) { var brush = new SolidColorBrush(Color.FromRgb((byte)random.Next(1, 255), (byte)random.Next(1, 255), (byte)random.Next(1, 233))); var ellipse = new EllipseElement( i, new Point(random.Next(0, (int)RenderSize.Width), random.Next(0, (int)RenderSize.Height)), new Size(90, 90), this.RenderSize, brush); Ellipses.Add(ellipse); this.MainManvas.Children.Add(ellipse.Shape); var locationsSource = ellipse .Start(); locationsSource .ObserveOnDispatcher() .Subscribe(p => { Canvas.SetLeft(ellipse.Shape, p.Point.X); Canvas.SetTop(ellipse.Shape, p.Point.Y); }); LocationsSource.Add(locationsSource); } IObservable <ShapePoint> mergedLocationSources = Observable.Empty <ShapePoint>(); foreach (var ls in LocationsSource) { mergedLocationSources = mergedLocationSources.Merge(ls); } foreach (var el in Ellipses) { el.UpdateNegborsLocationSource(mergedLocationSources); } Console.WriteLine(Ellipses.Count); }
public override void OnMouseUp(int button, int shift, int x, int y) { if (this.inewEnvelopeFeedback_0 != null) { IEnvelope boundingEnvelope = this.inewEnvelopeFeedback_0.Stop(); IEllipticArc ellipticArc = new EllipticArc(); (ellipticArc as IConstructEllipticArc).ConstructEnvelope(boundingEnvelope); this.inewEnvelopeFeedback_0 = null; IPolygon polygon = new Polygon() as IPolygon; object value = Missing.Value; (polygon as ISegmentCollection).AddSegment(ellipticArc as ISegment, ref value, ref value); IElement element = new EllipseElement { Geometry = polygon }; INewElementOperation operation = new NewElementOperation { ActiveView = this._context.ActiveView, Element = element, ContainHook = this.GetActiveView() }; this._context.OperationStack.Do(operation); //if (this._context.Hook is IApplication) //{ // if ((this._context.Hook as IApplication).ContainerHook != null) // { // DocumentManager.DocumentChanged((this._context.Hook as IApplication).ContainerHook); // } // else // { // DocumentManager.DocumentChanged((this._context.Hook as IApplication).Hook); // } //} //else //{ // DocumentManager.DocumentChanged(this._context.Hook); //} } }
/// <summary> /// Returns the SvgElement object converted from given XElement /// </summary> /// <param name="element"></param> /// <returns></returns> public static ISvgElement GetSvgElement(XElement element) { switch (element.Name.LocalName) { case "path": { var pathElement = new PathElement(element); AddAttributesToElement(pathElement, element); return(pathElement); } case "text": { var textElement = new TextElement(element); AddAttributesToElement(textElement, element); return(textElement); } case "circle": case "ellipse": { var ellipseElement = new EllipseElement(element); AddAttributesToElement(ellipseElement, element); return(ellipseElement); } case "rect": { var rectElement = new RectElement(element); AddAttributesToElement(rectElement, element); return(rectElement); } case "line": { var lineElement = new LineElement(element); AddAttributesToElement(lineElement, element); return(lineElement); } case "polyline": { var polyLineElement = new PolyLineElement(element, false); AddAttributesToElement(polyLineElement, element); return(polyLineElement); } case "polygon": { var polyLineElement = new PolyLineElement(element, true); AddAttributesToElement(polyLineElement, element); return(polyLineElement); } case "g": { var gElement = new GElement(element); AddAttributesToElement(gElement, element); return(gElement); } case "defs": { AddDefinitions(element); return(null); } default: return(null); } }
private static IElement CreateSvgLine(XdObjectJson xdObject, List <IDefElement> defs) { var id = xdObject.GetSimpleName().Replace(" ", "_"); var dataName = xdObject.GetSimpleName(); var shape = xdObject.Shape; var parameter = new ElementParameter { Id = id }; parameter.Transform = new Transform { Value = xdObject.Transform }; var opacity = xdObject.Style?.Opacity; parameter.Opacity = opacity; if (xdObject.Group != null) { if (MaskGroupParser.Is(xdObject)) { var clipPathId = $"clip-path{defs.Count}"; parameter.ClipPath = $"url(#{clipPathId})"; var clipPathChildren = xdObject.Meta.Ux.ClipPathResources.Children.Select(x => CreateSvgLine(x, defs)); defs.Add(new ClipPathDefElement { Id = clipPathId, Children = clipPathChildren.ToArray() }); } parameter.DataName = dataName; var blendMode = xdObject.Style?.BlendMode; var isolation = xdObject.Style?.Isolation; var children = xdObject.Group.Children.Select(x => CreateSvgLine(x, defs)).ToArray(); return(new GroupElement { Parameter = parameter, Children = children, BlendMode = blendMode, Isolation = isolation }); } XdStyleFillPatternJson image = null; var fill = xdObject.Style?.Fill; parameter.EnableFill = true; if (fill != null && fill.Type != "none") { var color = xdObject.Style.Fill.ToUnityColor(); parameter.Fill = color; if (fill.Type == "solid" || fill.Type == "gradient") { // nothing to do // gradientはサポートしていないが、知らないタイプというわけではないのでスルー } else if (fill.Type == "pattern") { image = fill.Pattern; parameter.Fill = null; } else { Debug.LogWarning($"Unknown fill type {fill.Type} in {xdObject.Name}"); } if (!string.IsNullOrWhiteSpace(shape.Winding)) { parameter.FillRule = shape.Winding; } } float?shapeR = null; if (shape.R != null) { if (shape.R is List <object> list) { shapeR = (float)(double)list[0]; } else if (shape.R is double d) { shapeR = (float)d; } else { throw new NotSupportedException($"Unknown shape.r type {shape.R.GetType()}"); } } if (shapeR != null && shape.Type != CircleElement.Name) { parameter.Rx = shapeR; if (parameter.Rx > shape.Width / 2f) { parameter.Rx = shape.Width / 2f; } if (parameter.Rx > shape.Height / 2f) { parameter.Rx = shape.Height / 2f; } } var stroke = xdObject.Style?.Stroke; string strokeAlign = null; if (stroke != null && stroke.Type != "none") { parameter.EnableStroke = true; parameter.Stroke = stroke.ToUnityColor(); parameter.StrokeWidth = stroke.Width; parameter.StrokeMiterLimit = stroke.MiterLimit; if (!string.IsNullOrWhiteSpace(stroke.Join)) { parameter.StrokeLinejoin = stroke.Join; } if (!string.IsNullOrWhiteSpace(stroke.Cap)) { parameter.StrokeLinecap = stroke.Cap; } if (stroke.Dash != null) { parameter.StrokeDasharray = stroke.Dash; } if (stroke.Align == null) { strokeAlign = null; } else if (stroke.Align == "outside") { strokeAlign = "outside"; } else if (stroke.Align == "inside") { strokeAlign = "inside"; } else { throw new NotSupportedException($"{xdObject} has unknown align type {stroke.Align}"); } } if (image != null) { var imageBytes = XdImporter.XdFile.GetResource(fill.Pattern.Meta); return(new ImageElement { Parameter = parameter, ImageBytes = imageBytes, Width = shape.Width, Height = shape.Height }); } if (shape.Type == PathElement.Name) { return new PathElement { Parameter = parameter, D = shape.Path } } ; if (shape.Type == CompoundElement.Name) { return new CompoundElement { Parameter = parameter, D = shape.Path } } ; if (shape.Type == LineElement.Name) { return new LineElement { Parameter = parameter, X1 = shape.X1, Y1 = shape.Y1, X2 = shape.X2, Y2 = shape.Y2 } } ; if (shape.Type == RectElement.Name) { if (strokeAlign == "outside") { return(RectElement.Outside(shape, parameter)); } if (strokeAlign == "inside") { return(RectElement.Inside(shape, parameter)); } return(new RectElement { Parameter = parameter, Width = shape.Width, Height = shape.Height }); } if (shape.Type == CircleElement.Name) { if (strokeAlign == "outside") { return(CircleElement.Outside(shape, parameter, shapeR)); } if (strokeAlign == "inside") { return(CircleElement.Inside(shape, parameter, shapeR)); } return(new CircleElement { Parameter = parameter, Cx = shape.Cx, Cy = shape.Cy, R = shapeR.Value }); } if (shape.Type == EllipseElement.Name) { if (strokeAlign == "outside") { return(EllipseElement.Outside(shape, parameter)); } if (strokeAlign == "inside") { return(EllipseElement.Inside(shape, parameter)); } return(new EllipseElement { Parameter = parameter, Cx = shape.Cx, Cy = shape.Cy, Rx = shape.Rx, Ry = shape.Ry }); } throw new NotSupportedException($"Unknown type {shape.Type}"); }
public static ITFFrameList createFrameCN (PenetrTask task, PenetrInfo penInfo) { task.scanInfo(); // TODO отключено временно, до решения по алгоритму пересечений фланцев: //if (!Keyins.Penetrations.DEBUG_MODE) { // if (task.isCompoundExistsInPlace || task.TFFormsIntersected.Count == 0) // return null; //} var taskUOR = task.UOR; double pipeInsideDiam = penInfo.pipeDiameterInside * taskUOR.active_perSub; double pipeOutsideDiam = penInfo.pipeDiameterOutside * taskUOR.active_perSub; double flangeInsideDiam = penInfo.flangeDiameterInside * taskUOR.active_perSub; double flangeOutsideDiam = penInfo.flangeDiameterOutside * taskUOR.active_perSub; double flangeThick = penInfo.flangeThick * taskUOR.active_perSub; double length = task.Length * taskUOR.active_perSub; double pipeInRadius = pipeInsideDiam / 2; double pipeOutRadius = pipeOutsideDiam / 2; var tfApi = new Bentley.Building.Api.TFApplicationList().AsTFApplication; BCOM.ModelReference activeModel = App.ActiveModelReference; //ITFBrepList brepList; //tfApi.CreateTFBrep(0, out brepList); DPoint3d origin = task.Location.ToDPoint(); origin.ScaleInPlace(taskUOR.active_perMaster); DMatrix3d rot = task.Rotation.ToDMatrix3d(); var dTran = DTransform3d.FromMatrixAndTranslation(rot, origin); var tranInfo = new TransformInfo(dTran); // DMatrix3d.FromColumns( //rot.RowX.ToDVector(), rot.RowX.ToDVector(), rot.RowX.ToDVector()); //ITFFormRecipeList recipeList; var model = Session.Instance.GetActiveDgnModel(); var modelRef = Session.Instance.GetActiveDgnModelRef(); //CellHeaderElement taskEl = Element.GetFromElementRef(task.elemRefP) as CellHeaderElement; //DPoint3d taskOrigin; //taskEl.GetSnapOrigin(out taskOrigin); var ellips = new EllipseElement(model, null, DEllipse3d.FromCenterRadiusNormal(DPoint3d.Zero, pipeOutRadius, DVector3d.FromXY(0, 1))); ellips.ApplyTransform(tranInfo); var cone = new ConeElement(model, null, pipeOutRadius, pipeOutRadius, DPoint3d.FromXYZ(0, length, 0), DPoint3d.Zero, DMatrix3d.Rotation(DVector3d.UnitX, Angle.FromDegrees(-90)), true); cone.ApplyTransform(tranInfo); var ellips2 = new EllipseElement(model, null, DEllipse3d.FromCenterRadiusNormal( DPoint3d.Zero, pipeInRadius, DVector3d.FromXY(0, 1))); ellips2.ApplyTransform(tranInfo); var cone2 = new ConeElement(model, null, pipeInRadius, pipeInRadius, DPoint3d.Zero, DPoint3d.FromXYZ(0, length, 0), DMatrix3d.Zero, false); cone2.ApplyTransform(tranInfo); //int status = brepList.InitCylinder(pipeInsideRadius*task_subPerMaster, // (length - flangeThick)*task_subPerMaster, ref origin, // ref matrix, ""); //ITFElementList elemList; //tfApi.CreateTFElement(0, out elemList); // Bentley.GeometryNET.Common.CircularCylinder //ITFBrepList coneBrepList, cone2BrepList, resBrepList; //tfApi.CreateTFBrep(0, out coneBrepList); //tfApi.CreateTFBrep(0, out cone2BrepList); //coneBrepList.InitFromElement(cone, modelRef, ""); //cone2BrepList.InitFromElement(cone2, modelRef, ""); //coneBrepList.AsTFBrep.InitCylinder(pipeInsideRadius, length, ref origin, // ref matrix, 0); ITFItemList itemList; tfApi.CreateTFItem(0, out itemList); //var sweepDir = DVector3d.FromXY(1, 0); //coneBrepList.AsTFBrep.Drop(out resBrepList, cone2BrepList, 0); //sweepDir.NegateInPlace(); // coneBrepList.AsTFBrep.Cut(out resBrepList, cone2BrepList, ref sweepDir, length + 150, false, 0); //coneBrepList.AsTFBrep.SweepByVector3(ref sweepDir, length + 300, // pipeOutsideRadius - pipeInsideRadius, 0, 0); //Array arr = new System.Collections.ArrayList().ToArray(); //coneBrepList.AsTFBrep.Cut2(out resBrepList, cone2BrepList.AsTFBrep, ref sweepDir, //Bentley.Building.Api.TFdBrepCutMethod.tfdBrepCutMethod_Outside, //Bentley.Building.Api.TFdBrepCutDirection.tfdBrepCutDirection_Both, //Bentley.Building.Api.TFdBrepCutDepth.tfdBrepCutDepth_UpToSolid, length, //arr, 0, false, Bentley.Building.Api.TFdBrepCutDepth.tfdBrepCutDepth_UpToSolid, length, //arr, 0, false, 0, 0, 0.00005, 0); //lement resElement; //resBrepList.GetElement(out resElement, 0, ""); //coneBrepList.GetElement(out resElement, 0, ""); ITFFrameList frameList; tfApi.CreateTFFrame(0, out frameList); frameList.AsTFFrame.Add3DElement(cone, 0); //frameList.AsTFFrame.Add3DElement(cone2, 0); //frameList.AsTFFrame.Add3DElement(resElement, 0); //ITFFrameList openingFrameList; //tfApi.CreateTFFrame(0, out openingFrameList); //openingFrameList.AsTFFrame.Add3DElement(cone2, 0); //ITFFormRecipeList openRecipeList; ////tfApi.CreateTFFormRecipeArc //ITFFormRecipe openRecipe; //openingFrameList.AsTFFrame.GetFormRecipeList(0, out openRecipeList); //openRecipe = openRecipeList.AsTFFormRecipe; //ITFItemList featureList; //frameList.AsTFFrame.AddOpeningsToForm(out featureList, ref openRecipe, "", 0); ITFPerforatorList perfoList; tfApi.CreateTFPerforator(0, out perfoList); var dir = DVector3d.FromXY(1, 0); var tran = DTransform3d.Identity; perfoList.InitFromElement(ellips, ref dir, length, ref tran, ""); perfoList.AsTFPerforator.SetIsVisible(false, 0); perfoList.SetSweepMode(Bentley.Building.Api.TFdPerforatorSweepMode.tfdPerforatorSweepModeBi, ""); perfoList.SetPolicy(Bentley.Building.Api.TFdPerforatorPolicy.tfdPerforatorPolicyThroughHoleWithinSenseDist, ""); frameList.AsTFFrame.SetPerforatorList(ref perfoList, 0); frameList.AsTFFrame.SetSenseDistance2(length / 100, 0); frameList.AsTFFrame.SetPerforatorsAreActive(true, 0); int stat; // = tfApi.ModelReferenceAddFrameList(modelRef, ref frameList, 0); var frame = frameList.AsTFFrame; stat = tfApi.ModelReferenceUpdateAutoOpeningsByFrame(modelRef, ref frame, true, false, Bentley.Building.Api.TFdFramePerforationPolicy.tfdFramePerforationPolicyNone, 0); //Element cylindr; //brepList.GetElement(out cylindr, 0, ""); //cylindr.AddToModel(); //Element tfElement; //Element perfo = null; //Element dp_2d = null; //int value; //tfApi.ModelReferenceAddElement(ref cylindr, Session.Instance.GetActiveDgnModel(), // 0, 0, out value); //tfApi.ModelReferenceConstructFrameElement(Session.Instance.GetActiveDgnModel(), // 0, ref cylindr, ref perfo, ref origin, ref dp_2d, "name", null, // 1, 0, false, null, false, task.Length, 0.00005, 0, out tfElement); //frameList.InitFromElement(cylindr, ""); // frameList.AsTFFrame.Add3DElement(cylindr, 0); return(frameList); }
public static void addToModelWithProjAndPerfo(ref TFCOM.TFFrameList frameList, PenetrTask task, PenetrInfo penInfo, BCOM.Level levelSymb, BCOM.Level levelRefPoint) { var taskUOR = new UOR(task.modelRef); double pipeInsideDiam = penInfo.pipeDiameterInside / taskUOR.active_subPerMaster; double pipeOutsideDiam = penInfo.pipeDiameterOutside / taskUOR.active_subPerMaster; double flangeInsideDiam = penInfo.flangeDiameterInside / taskUOR.active_subPerMaster; double flangeOutsideDiam = penInfo.flangeDiameterOutside / taskUOR.active_subPerMaster; double flangeThick = penInfo.flangeThick / taskUOR.active_subPerMaster; double length = task.LengthCm * 10 / taskUOR.active_subPerMaster; BCOM.ModelReference activeModel = App.ActiveModelReference; //AppTF.ModelReferenceAddFrameList(activeModel, ref frameList); frameList.Synchronize(); var frameListClass = frameList as TFCOM.TFFrameListClass; BCOM.Element bcomElem; frameListClass.GetElement(out bcomElem); var tfApi = new Bentley.Building.Api.TFApplicationList().AsTFApplication; var modelRef = Session.Instance.GetActiveDgnModelRef(); var model = Session.Instance.GetActiveDgnModel(); Element ielement = Element.GetFromElementRef((IntPtr)bcomElem.MdlElementRef()); modelRef.GetFromElementRef((IntPtr)bcomElem.MdlElementRef()); ITFFrameList iframeList; tfApi.CreateTFFrame(0, out iframeList); iframeList.InitFromElement(ielement, ""); iframeList.Synchronize(""); DPoint3d origin = task.Location.ToDPoint(); origin.ScaleInPlace(taskUOR.active_perMaster); DMatrix3d matrix = DMatrix3d.FromRows( task.Rotation.RowX.ToDVector(), task.Rotation.RowY.ToDVector(), task.Rotation.RowZ.ToDVector()); DTransform3d dTran = DTransform3d.FromMatrixAndTranslation(matrix, origin); TransformInfo tranInfo = new TransformInfo(dTran); double pipeInsideRadius = pipeOutsideDiam / 2 * taskUOR.active_perMaster; double dgnLength = length * taskUOR.active_perMaster; var ellips = new EllipseElement(model, null, DEllipse3d.FromCenterRadiusNormal(DPoint3d.Zero, pipeInsideRadius, DVector3d.FromXY(0, 1))); ellips.ApplyTransform(tranInfo); //{ // ПЕРФОРАТОР: // ITFPerforatorList perfoList; // tfApi.CreateTFPerforator(0, out perfoList); // var dir = DVector3d.FromXY(1, 0); // var tran = DTransform3d.Identity; // //perfoList.InitFromElement(ellips, ref dir, length*toUOR, ref tran, ""); // perfoList.InitFromElement2(ellips, length*taskUOR.active_perMaster, ""); // perfoList.AsTFPerforator.SetIsVisible(false, 0); // perfoList.SetSweepMode(Bentley.Building.Api.TFdPerforatorSweepMode.tfdPerforatorSweepModeBi, ""); // perfoList.SetPolicy(Bentley.Building.Api.TFdPerforatorPolicy.tfdPerforatorPolicyThroughHoleWithinSenseDist, ""); // (iframeList as Bentley.Building.Api.TFFrameList).SetPerforatorList(ref perfoList, 0); // // iframeList.AsTFFrame.SetPerforatorList(ref perfoList, 0); // iframeList.AsTFFrame.SetSenseDistance2(length, 0); // iframeList.AsTFFrame.SetPerforatorsAreActive(true, 0); // var frame = iframeList.AsTFFrame; // tfApi.ModelReferenceUpdateAutoOpeningsByFrame(modelRef, //ref frame, true, false, Bentley.Building.Api.TFdFramePerforationPolicy.tfdFramePerforationPolicyStrict, 0); //} // tfApi.ModelReferenceRewriteFrameInstance(modelRef, iframeList.AsTFFrame, 0); //iframeList.AsTFFrame.Synchronize(0); { // ПРОЕКЦИОННАЯ ГЕОМЕТРИЯ ITFProjectionList projList, projList1, projList2, projList3; tfApi.CreateTFProjection(0, out projList); tfApi.CreateTFProjection(0, out projList1); tfApi.CreateTFProjection(0, out projList2); tfApi.CreateTFProjection(0, out projList3); var zero = DPoint3d.Zero; DPoint3d[] verts = { zero, zero, zero, zero, zero }; double k = pipeInsideRadius * Math.Cos(Math.PI / 4); verts[0].X = -k; verts[0].Z = -k; verts[1].X = k; verts[1].Z = k; verts[3] = verts[0]; verts[3].Z *= -1; verts[4] = verts[1]; verts[4].Z *= -1; LineStringElement cross1 = new LineStringElement(model, null, verts); for (int i = 0; i < verts.Count(); ++i) { verts[i].Y = dgnLength; } LineStringElement cross2 = new LineStringElement(model, null, verts); cross1.ApplyTransform(tranInfo); cross2.ApplyTransform(tranInfo); projList1.AsTFProjection.SetEmbeddedElement(cross1, 0); projList2.AsTFProjection.SetEmbeddedElement(cross2, 0); LineElement refPoint = new LineElement(model, null, new DSegment3d(zero, zero)); refPoint.ApplyTransform(tranInfo); ElementPropertiesSetter setter = new ElementPropertiesSetter(); setter.SetWeight(7); setter.Apply(refPoint); projList3.AsTFProjection.SetEmbeddedElement(refPoint, 0); projList.Append(projList1, ""); projList.Append(projList2, ""); projList.Append(projList3, ""); iframeList.AsTFFrame.SetProjectionList(projList, 0); //iframeList.AsTFFrame.Synchronize(0); //iframeList.Synchronize(string.Empty); } tfApi.ModelReferenceRewriteFrameInstance(modelRef, iframeList.AsTFFrame, 0); // int stat = tfApi.ModelReferenceRewriteFrameList(modelRef, iframeList, 0); //tfApi.ModelReferenceAddFrameList(modelRef, ref iframeList, 0); // tfApi.ModelReferenceRewriteFrameList(modelRef, iframeList, 0); //frameListClass = frameList as TFCOM.TFFrameListClass; //frameListClass.GetElement(out bcomElem); // setDataGroupInstance(bcomElem, task); }
protected void createPdfButton_Click(object sender, EventArgs e) { // Create a PDF document Document pdfDocument = new Document(); // Set license key received after purchase to use the converter in licensed mode // Leave it not set to use the converter in demo mode pdfDocument.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c="; try { // The result of adding elements to PDF document AddElementResult addElementResult = null; // The titles font used to mark various sections of the PDF document PdfFont titleFont = pdfDocument.AddFont(new Font("Times New Roman", 12, FontStyle.Bold, GraphicsUnit.Point)); // The position on X anf Y axes where to add the next element float yLocation = 5; float xLocation = 5; // Create a PDF page in PDF document PdfPage pdfPage = pdfDocument.AddPage(); // Line Elements // Add section title TextElement titleTextElement = new TextElement(xLocation, yLocation, "Line Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Add a line with default properties LineElement lineElement = new LineElement(xLocation, yLocation, xLocation + 50, yLocation); addElementResult = pdfPage.AddElement(lineElement); // Add a bold line LineElement boldLineElement = new LineElement(xLocation + 60, yLocation, xLocation + 110, yLocation); boldLineElement.LineStyle.LineWidth = 3; addElementResult = pdfPage.AddElement(boldLineElement); // Add dotted line LineElement dottedLineElement = new LineElement(xLocation + 120, yLocation, xLocation + 170, yLocation); dottedLineElement.LineStyle.LineDashStyle = LineDashStyle.Dot; dottedLineElement.ForeColor = Color.Green; addElementResult = pdfPage.AddElement(dottedLineElement); // Add a dashed line LineElement dashedLineElement = new LineElement(xLocation + 180, yLocation, xLocation + 230, yLocation); dashedLineElement.LineStyle.LineDashStyle = LineDashStyle.Dash; dashedLineElement.ForeColor = Color.Green; addElementResult = pdfPage.AddElement(dashedLineElement); // Add a dash-dot-dot line LineElement dashDotDotLineElement = new LineElement(xLocation + 240, yLocation, xLocation + 290, yLocation); dashDotDotLineElement.LineStyle.LineDashStyle = LineDashStyle.DashDotDot; dashDotDotLineElement.ForeColor = Color.Green; addElementResult = pdfPage.AddElement(dashDotDotLineElement); // Add a bold line with rounded cap style LineElement roundCapBoldLine = new LineElement(xLocation + 300, yLocation, xLocation + 350, yLocation); roundCapBoldLine.LineStyle.LineWidth = 5; roundCapBoldLine.LineStyle.LineCapStyle = LineCapStyle.RoundCap; roundCapBoldLine.ForeColor = Color.Blue; addElementResult = pdfPage.AddElement(roundCapBoldLine); // Add a bold line with projecting square cap style LineElement projectingSquareCapBoldLine = new LineElement(xLocation + 360, yLocation, xLocation + 410, yLocation); projectingSquareCapBoldLine.LineStyle.LineWidth = 5; projectingSquareCapBoldLine.LineStyle.LineCapStyle = LineCapStyle.ProjectingSquareCap; projectingSquareCapBoldLine.ForeColor = Color.Blue; addElementResult = pdfPage.AddElement(projectingSquareCapBoldLine); // Add a bold line with projecting butt cap style LineElement buttCapBoldLine = new LineElement(xLocation + 420, yLocation, xLocation + 470, yLocation); buttCapBoldLine.LineStyle.LineWidth = 5; buttCapBoldLine.LineStyle.LineCapStyle = LineCapStyle.ButtCap; buttCapBoldLine.ForeColor = Color.Blue; addElementResult = pdfPage.AddElement(buttCapBoldLine); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Line Join Styles // Add section title xLocation -= 5; yLocation += 10; titleTextElement = new TextElement(xLocation, yLocation, "Line Join and Cap Styles", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Add graphic path with miter join line style PathElement miterJoinPath = new PathElement(new PointF(xLocation, yLocation + 50)); // Add path lines miterJoinPath.AddLineSegment(new PointF(xLocation + 25, yLocation)); miterJoinPath.AddLineSegment(new PointF(xLocation + 50, yLocation + 50)); // Set path style miterJoinPath.LineStyle.LineWidth = 5; miterJoinPath.LineStyle.LineCapStyle = LineCapStyle.ProjectingSquareCap; miterJoinPath.LineStyle.LineJoinStyle = LineJoinStyle.MiterJoin; miterJoinPath.ForeColor = Color.Coral; addElementResult = pdfPage.AddElement(miterJoinPath); // Add graphic path with round join line style PathElement roundJoinPath = new PathElement(new PointF(xLocation + 70, yLocation + 50)); // Add path lines roundJoinPath.AddLineSegment(new PointF(xLocation + 95, yLocation)); roundJoinPath.AddLineSegment(new PointF(xLocation + 120, yLocation + 50)); // Set path style roundJoinPath.LineStyle.LineWidth = 5; roundJoinPath.LineStyle.LineCapStyle = LineCapStyle.RoundCap; roundJoinPath.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; roundJoinPath.ForeColor = Color.Coral; addElementResult = pdfPage.AddElement(roundJoinPath); // Add graphic path with bevel join line style PathElement bevelJoinPath = new PathElement(new PointF(xLocation + 140, yLocation + 50)); // Add lines to path bevelJoinPath.AddLineSegment(new PointF(xLocation + 165, yLocation)); bevelJoinPath.AddLineSegment(new PointF(xLocation + 190, yLocation + 50)); // Set path style bevelJoinPath.LineStyle.LineWidth = 5; bevelJoinPath.LineStyle.LineCapStyle = LineCapStyle.ButtCap; bevelJoinPath.LineStyle.LineJoinStyle = LineJoinStyle.BevelJoin; bevelJoinPath.ForeColor = Color.Coral; // Add element to document addElementResult = pdfPage.AddElement(bevelJoinPath); // Add a polygon with miter join line style PointF[] polygonPoints = new PointF[] { new PointF(xLocation + 210, yLocation + 50), new PointF(xLocation + 235, yLocation), new PointF(xLocation + 260, yLocation + 50) }; PolygonElement miterJoinPolygon = new PolygonElement(polygonPoints); // Set polygon style miterJoinPolygon.LineStyle.LineWidth = 5; miterJoinPolygon.LineStyle.LineJoinStyle = LineJoinStyle.MiterJoin; miterJoinPolygon.ForeColor = Color.Green; miterJoinPolygon.BackColor = Color.AliceBlue; addElementResult = pdfPage.AddElement(miterJoinPolygon); // Add a polygon with round join line style polygonPoints = new PointF[] { new PointF(xLocation + 280, yLocation + 50), new PointF(xLocation + 305, yLocation), new PointF(xLocation + 330, yLocation + 50) }; PolygonElement roundJoinPolygon = new PolygonElement(polygonPoints); // Set polygon style roundJoinPolygon.LineStyle.LineWidth = 5; roundJoinPolygon.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; roundJoinPolygon.ForeColor = Color.Green; roundJoinPolygon.BackColor = Color.Blue; addElementResult = pdfPage.AddElement(roundJoinPolygon); // Add a polygon with bevel join line style polygonPoints = new PointF[] { new PointF(xLocation + 350, yLocation + 50), new PointF(xLocation + 375, yLocation), new PointF(xLocation + 400, yLocation + 50) }; PolygonElement bevelJoinPolygon = new PolygonElement(polygonPoints); // Set polygon style bevelJoinPolygon.LineStyle.LineWidth = 5; bevelJoinPolygon.LineStyle.LineJoinStyle = LineJoinStyle.BevelJoin; bevelJoinPolygon.ForeColor = Color.Green; bevelJoinPolygon.BackColor = Color.Blue; addElementResult = pdfPage.AddElement(bevelJoinPolygon); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Add a Graphics Path Element // Add section title xLocation -= 5; yLocation += 10; titleTextElement = new TextElement(xLocation, yLocation, "Path Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Create the path PathElement graphicsPath = new PathElement(new PointF(xLocation, yLocation)); // Add line and Bezier curve segments graphicsPath.AddLineSegment(new PointF(xLocation + 50, yLocation + 50)); graphicsPath.AddBezierCurveSegment(new PointF(xLocation + 100, yLocation), new PointF(xLocation + 200, yLocation + 100), new PointF(xLocation + 250, yLocation + 50)); graphicsPath.AddLineSegment(new PointF(xLocation + 300, yLocation)); // Close path graphicsPath.ClosePath = true; // Set path style graphicsPath.LineStyle.LineWidth = 3; graphicsPath.LineStyle.LineJoinStyle = LineJoinStyle.MiterJoin; graphicsPath.LineStyle.LineCapStyle = LineCapStyle.RoundCap; graphicsPath.ForeColor = Color.Green; //graphicsPath.BackColor = Color.Green; graphicsPath.Gradient = new GradientColor(GradientDirection.Vertical, System.Drawing.Color.LightGreen, System.Drawing.Color.Blue); // Add element to document addElementResult = pdfPage.AddElement(graphicsPath); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Add Circle Elements // Add section title xLocation -= 5; yLocation -= 10; titleTextElement = new TextElement(xLocation, yLocation, "Circle Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Add a Circle Element with default settings CircleElement circleElement = new CircleElement(xLocation + 30, yLocation + 30, 30); addElementResult = pdfPage.AddElement(circleElement); // Add dotted circle element CircleElement dottedCircleElement = new CircleElement(xLocation + 100, yLocation + 30, 30); dottedCircleElement.ForeColor = Color.Green; dottedCircleElement.LineStyle.LineDashStyle = LineDashStyle.Dot; addElementResult = pdfPage.AddElement(dottedCircleElement); // Add a disc CircleElement discElement = new CircleElement(xLocation + 170, yLocation + 30, 30); discElement.ForeColor = Color.Green; discElement.BackColor = Color.LightGray; addElementResult = pdfPage.AddElement(discElement); // Add disc with bold border CircleElement discWithBoldBorder = new CircleElement(xLocation + 240, yLocation + 30, 30); discWithBoldBorder.LineStyle.LineWidth = 5; discWithBoldBorder.BackColor = Color.Coral; discWithBoldBorder.ForeColor = Color.Blue; addElementResult = pdfPage.AddElement(discWithBoldBorder); // Add colored disc with bold border for (int i = 30; i >= 0; i = i - 3) { CircleElement coloredDisc = new CircleElement(xLocation + 310, yLocation + 30, i == 0 ? 1 : i); coloredDisc.LineStyle.LineWidth = 3; switch ((i / 3) % 7) { case 0: coloredDisc.BackColor = Color.Red; break; case 1: coloredDisc.BackColor = Color.Orange; break; case 2: coloredDisc.BackColor = Color.Yellow; break; case 3: coloredDisc.BackColor = Color.Green; break; case 4: coloredDisc.BackColor = Color.Blue; break; case 5: coloredDisc.BackColor = Color.Indigo; break; case 6: coloredDisc.BackColor = Color.Violet; break; default: break; } addElementResult = pdfPage.AddElement(coloredDisc); } // Add a doughnut CircleElement exteriorNoBorderDisc = new CircleElement(xLocation + 380, yLocation + 30, 30); exteriorNoBorderDisc.BackColor = Color.Coral; addElementResult = pdfPage.AddElement(exteriorNoBorderDisc); CircleElement interiorNoBorderDisc = new CircleElement(xLocation + 380, yLocation + 30, 15); interiorNoBorderDisc.BackColor = Color.White; pdfPage.AddElement(interiorNoBorderDisc); // Add a simple disc CircleElement simpleDisc = new CircleElement(xLocation + 450, yLocation + 30, 30); simpleDisc.BackColor = Color.Green; addElementResult = pdfPage.AddElement(simpleDisc); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Add Ellipse Elements // Add section title xLocation -= 5; yLocation += 10; titleTextElement = new TextElement(xLocation, yLocation, "Ellipse Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Add an Ellipse Element with default settings EllipseElement ellipseElement = new EllipseElement(xLocation + 50, yLocation + 30, 50, 30); addElementResult = pdfPage.AddElement(ellipseElement); // Add an Ellipse Element with background color and line color EllipseElement ellipseWithBackgroundAndBorder = new EllipseElement(xLocation + 160, yLocation + 30, 50, 30); ellipseWithBackgroundAndBorder.BackColor = Color.LightGray; ellipseWithBackgroundAndBorder.ForeColor = Color.Green; addElementResult = pdfPage.AddElement(ellipseWithBackgroundAndBorder); // Create an ellipse from multiple Ellipse Arc Elements EllipseArcElement ellipseArcElement1 = new EllipseArcElement(xLocation + 220, yLocation, 100, 60, 0, 100); ellipseArcElement1.ForeColor = Color.Coral; ellipseArcElement1.LineStyle.LineWidth = 3; addElementResult = pdfPage.AddElement(ellipseArcElement1); EllipseArcElement ellipseArcElement2 = new EllipseArcElement(xLocation + 220, yLocation, 100, 60, 100, 100); ellipseArcElement2.ForeColor = Color.Blue; ellipseArcElement2.LineStyle.LineWidth = 3; addElementResult = pdfPage.AddElement(ellipseArcElement2); EllipseArcElement ellipseArcElement3 = new EllipseArcElement(xLocation + 220, yLocation, 100, 60, 180, 100); ellipseArcElement3.ForeColor = Color.Green; ellipseArcElement3.LineStyle.LineWidth = 3; addElementResult = pdfPage.AddElement(ellipseArcElement3); EllipseArcElement ellipseArcElement4 = new EllipseArcElement(xLocation + 220, yLocation, 100, 60, 270, 100); ellipseArcElement4.ForeColor = Color.Violet; ellipseArcElement4.LineStyle.LineWidth = 3; addElementResult = pdfPage.AddElement(ellipseArcElement4); // Create an ellipse from multiple Ellipse Slice Elements EllipseSliceElement ellipseSliceElement1 = new EllipseSliceElement(xLocation + 330, yLocation, 100, 60, 0, 90); ellipseSliceElement1.BackColor = Color.Coral; addElementResult = pdfPage.AddElement(ellipseSliceElement1); EllipseSliceElement ellipseSliceElement2 = new EllipseSliceElement(xLocation + 330, yLocation, 100, 60, 90, 90); ellipseSliceElement2.BackColor = Color.Blue; addElementResult = pdfPage.AddElement(ellipseSliceElement2); EllipseSliceElement ellipseSliceElement3 = new EllipseSliceElement(xLocation + 330, yLocation, 100, 60, 180, 90); ellipseSliceElement3.BackColor = Color.Green; addElementResult = pdfPage.AddElement(ellipseSliceElement3); EllipseSliceElement ellipseSliceElement4 = new EllipseSliceElement(xLocation + 330, yLocation, 100, 60, 270, 90); ellipseSliceElement4.BackColor = Color.Violet; addElementResult = pdfPage.AddElement(ellipseSliceElement4); // Add an Ellipse Element with background EllipseElement ellipseWithBackground = new EllipseElement(xLocation + 490, yLocation + 30, 50, 30); ellipseWithBackground.BackColor = Color.Green; addElementResult = pdfPage.AddElement(ellipseWithBackground); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Add Rectangle Elements // Add section title xLocation -= 5; yLocation += 10; titleTextElement = new TextElement(xLocation, yLocation, "Rectangle Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Add a Rectangle Element with default settings RectangleElement rectangleElement = new RectangleElement(xLocation, yLocation, 100, 60); addElementResult = pdfPage.AddElement(rectangleElement); // Add a Rectangle Element with background color and dotted line RectangleElement rectangleElementWithDottedLine = new RectangleElement(xLocation + 110, yLocation, 100, 60); rectangleElementWithDottedLine.BackColor = Color.LightGray; rectangleElementWithDottedLine.ForeColor = Color.Green; rectangleElementWithDottedLine.LineStyle.LineDashStyle = LineDashStyle.Dot; addElementResult = pdfPage.AddElement(rectangleElementWithDottedLine); // Add a Rectangle Element with background color without border RectangleElement rectangleElementWithoutBorder = new RectangleElement(xLocation + 220, yLocation, 100, 60); rectangleElementWithoutBorder.BackColor = Color.Green; addElementResult = pdfPage.AddElement(rectangleElementWithoutBorder); // Add a Rectangle Element with background color, bold border line and rounded corners RectangleElement rectangleElementWithRoundedCorners = new RectangleElement(xLocation + 330, yLocation, 100, 60); rectangleElementWithRoundedCorners.BackColor = Color.Coral; rectangleElementWithRoundedCorners.ForeColor = Color.Blue; rectangleElementWithRoundedCorners.LineStyle.LineWidth = 5; rectangleElementWithRoundedCorners.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; addElementResult = pdfPage.AddElement(rectangleElementWithRoundedCorners); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Add Polygon Elements // Add section title xLocation -= 5; yLocation += 10; titleTextElement = new TextElement(xLocation, yLocation, "Polygon Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; PointF[] polygonElementPoints = new PointF[] { new PointF(xLocation, yLocation + 50), new PointF(xLocation + 50, yLocation), new PointF(xLocation + 100, yLocation + 50), new PointF(xLocation + 50, yLocation + 100) }; // Add a Polygon Element with default settings PolygonElement polygonElement = new PolygonElement(polygonElementPoints); addElementResult = pdfPage.AddElement(polygonElement); polygonElementPoints = new PointF[] { new PointF(xLocation + 110, yLocation + 50), new PointF(xLocation + 160, yLocation), new PointF(xLocation + 210, yLocation + 50), new PointF(xLocation + 160, yLocation + 100) }; // Add a Polygon Element with background color and border polygonElement = new PolygonElement(polygonElementPoints); polygonElement.BackColor = Color.LightGray; polygonElement.ForeColor = Color.Green; polygonElement.LineStyle.LineDashStyle = LineDashStyle.Dot; addElementResult = pdfPage.AddElement(polygonElement); polygonElementPoints = new PointF[] { new PointF(xLocation + 220, yLocation + 50), new PointF(xLocation + 270, yLocation), new PointF(xLocation + 320, yLocation + 50), new PointF(xLocation + 270, yLocation + 100) }; // Add a Polygon Element with background color polygonElement = new PolygonElement(polygonElementPoints); polygonElement.BackColor = Color.Green; addElementResult = pdfPage.AddElement(polygonElement); PointF[] polyFillPoints = new PointF[] { new PointF(xLocation + 330, yLocation + 50), new PointF(xLocation + 380, yLocation), new PointF(xLocation + 430, yLocation + 50), new PointF(xLocation + 380, yLocation + 100) }; // Add a Polygon Element with background color and rounded line joins PolygonElement polygonElementWithBackgruondColorAndBorder = new PolygonElement(polyFillPoints); polygonElementWithBackgruondColorAndBorder.ForeColor = Color.Blue; polygonElementWithBackgruondColorAndBorder.BackColor = Color.Coral; polygonElementWithBackgruondColorAndBorder.LineStyle.LineWidth = 5; polygonElementWithBackgruondColorAndBorder.LineStyle.LineCapStyle = LineCapStyle.RoundCap; polygonElementWithBackgruondColorAndBorder.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; addElementResult = pdfPage.AddElement(polygonElementWithBackgruondColorAndBorder); yLocation = addElementResult.EndPageBounds.Bottom + 3; pdfPage = addElementResult.EndPdfPage; // Add Bezier Curve Elements // Add section title xLocation -= 5; yLocation += 10; titleTextElement = new TextElement(xLocation, yLocation, "Bezier Curve Elements", titleFont); titleTextElement.ForeColor = Color.Black; addElementResult = pdfPage.AddElement(titleTextElement); yLocation = addElementResult.EndPageBounds.Bottom + 10; xLocation += 5; pdfPage = addElementResult.EndPdfPage; // Add a Bezier Curve Element with normal style BezierCurveElement bezierCurveElement = new BezierCurveElement(xLocation, yLocation + 50, xLocation + 50, yLocation, xLocation + 100, yLocation + 100, xLocation + 150, yLocation + 50); bezierCurveElement.ForeColor = Color.Blue; bezierCurveElement.LineStyle.LineWidth = 3; addElementResult = pdfPage.AddElement(bezierCurveElement); // Mark the points controlling the Bezier curve CircleElement controlPoint1 = new CircleElement(xLocation + 200, yLocation + 50, 2); controlPoint1.BackColor = Color.Violet; pdfPage.AddElement(controlPoint1); CircleElement controlPoint2 = new CircleElement(xLocation + 250, yLocation, 2); controlPoint2.BackColor = Color.Violet; pdfPage.AddElement(controlPoint2); CircleElement controlPoint3 = new CircleElement(xLocation + 300, yLocation + 100, 2); controlPoint3.BackColor = Color.Violet; pdfPage.AddElement(controlPoint3); CircleElement controlPoint4 = new CircleElement(xLocation + 350, yLocation + 50, 2); controlPoint4.BackColor = Color.Violet; pdfPage.AddElement(controlPoint4); // Add a Bezier Curve Element with dotted line using the controlling points above bezierCurveElement = new BezierCurveElement(controlPoint1.X, controlPoint1.Y, controlPoint2.X, controlPoint2.Y, controlPoint3.X, controlPoint3.Y, controlPoint4.X, controlPoint4.Y); bezierCurveElement.ForeColor = Color.Green; bezierCurveElement.LineStyle.LineDashStyle = LineDashStyle.Dot; bezierCurveElement.LineStyle.LineWidth = 1; addElementResult = pdfPage.AddElement(bezierCurveElement); // Save the PDF document in a memory buffer byte[] outPdfBuffer = pdfDocument.Save(); // Send the PDF as response to browser // Set response content type Response.AddHeader("Content-Type", "application/pdf"); // Instruct the browser to open the PDF file as an attachment or inline Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Graphic_Elements.pdf; size={0}", outPdfBuffer.Length.ToString())); // Write the PDF document buffer to HTTP response Response.BinaryWrite(outPdfBuffer); // End the HTTP response and stop the current page processing Response.End(); } finally { // Close the PDF document pdfDocument.Close(); } }
public void EllipseContainsCorrectElementCommand() { var sut = new EllipseElement(); Assert.Contains("^GE", sut.ToString()); }
private static IElement CreateSvgLine(XdObjectJson xdObject, List <IDefElement> defs) { var id = xdObject.Name.Replace(" ", "_"); var dataName = xdObject.Name; var shape = xdObject.Shape; var parameter = new ElementParameter { Id = id }; var tx = xdObject.Transform?.Tx ?? 0f; var ty = xdObject.Transform?.Ty ?? 0f; parameter.Transform.X = tx; parameter.Transform.Y = ty; var opacity = xdObject.Style?.Opacity; parameter.Opacity = opacity; if (xdObject.Group != null) { parameter.DataName = dataName; if (xdObject.Meta?.Ux?.ClipPathResources?.Type == "clipPath") { var clipPath = xdObject.Meta.Ux.ClipPathResources.Children[0]; parameter.ClipPath = "url(#clip-path)"; var clipPathPath = new PathElement { Parameter = new ElementParameter { Id = "_Clipping_Path_", DataName = "Clipping Path", Transform = new Transform { X = clipPath.Transform.Tx, Y = clipPath.Transform.Ty, }, }, D = clipPath.Shape.Path, }; defs.Add(new ClipPathDefElement { Id = "clip-path", Path = clipPathPath }); } var children = xdObject.Group.Children.Select(x => CreateSvgLine(x, defs)).ToArray(); return(new GroupElement { Parameter = parameter, Children = children }); } var fill = xdObject.Style?.Fill; parameter.EnableFill = true; if (fill != null && fill.Type != "none") { var color = xdObject.GetFillColor(); parameter.Fill = color; if (!string.IsNullOrWhiteSpace(shape.Winding)) { parameter.FillRule = shape.Winding; } } float?shapeR = null; if (shape.R != null) { if (shape.R is Newtonsoft.Json.Linq.JValue jValue) { shapeR = (float)jValue; } else if (shape.R is Newtonsoft.Json.Linq.JArray jArray) { shapeR = (float)jArray[0]; } else if (shape.R is long l) { shapeR = l; } else if (shape.R is double d) { shapeR = (float)d; } else { throw new NotSupportedException($"Unknown shape.r type {shape.R.GetType()}"); } } if (shapeR != null && shape.Type != CircleElement.Name) { parameter.Rx = shapeR; if (parameter.Rx > shape.Width / 2f) { parameter.Rx = shape.Width / 2f; } if (parameter.Rx > shape.Height / 2f) { parameter.Rx = shape.Height / 2f; } } var stroke = xdObject.Style?.Stroke; string strokeAlign = null; if (stroke != null && stroke.Type != "none") { parameter.EnableStroke = true; parameter.Stroke = stroke.Color.Value; parameter.StrokeWidth = stroke.Width; parameter.StrokeMiterLimit = stroke.MiterLimit; if (!string.IsNullOrWhiteSpace(stroke.Join)) { parameter.StrokeLinejoin = stroke.Join; } if (!string.IsNullOrWhiteSpace(stroke.Cap)) { parameter.StrokeLinecap = stroke.Cap; } if (stroke.Dash != null) { parameter.StrokeDasharray = stroke.Dash; } if (stroke.Align == null) { strokeAlign = null; } else if (stroke.Align == "outside") { strokeAlign = "outside"; } else if (stroke.Align == "inside") { strokeAlign = "inside"; } else { throw new NotSupportedException($"{xdObject} has unknown align type {stroke.Align}"); } } if (shape.Type == PathElement.Name) { return new PathElement { Parameter = parameter, D = shape.Path } } ; if (shape.Type == CompoundElement.Name) { return new CompoundElement { Parameter = parameter, D = shape.Path } } ; if (shape.Type == LineElement.Name) { return new LineElement { Parameter = parameter, X1 = shape.X1, Y1 = shape.Y1, X2 = shape.X2, Y2 = shape.Y2 } } ; if (shape.Type == RectElement.Name) { if (strokeAlign == "outside") { return(RectElement.Outside(shape, parameter)); } if (strokeAlign == "inside") { return(RectElement.Inside(shape, parameter)); } return(new RectElement { Parameter = parameter, Width = shape.Width, Height = shape.Height }); } if (shape.Type == CircleElement.Name) { if (strokeAlign == "outside") { return(CircleElement.Outside(shape, parameter, shapeR)); } if (strokeAlign == "inside") { return(CircleElement.Inside(shape, parameter, shapeR)); } return(new CircleElement { Parameter = parameter, Cx = shape.Cx, Cy = shape.Cy, R = shapeR.Value }); } if (shape.Type == EllipseElement.Name) { if (strokeAlign == "outside") { return(EllipseElement.Outside(shape, parameter)); } if (strokeAlign == "inside") { return(EllipseElement.Inside(shape, parameter)); } return(new EllipseElement { Parameter = parameter, Cx = shape.Cx, Cy = shape.Cy, Rx = shape.Rx, Ry = shape.Ry }); } throw new NotSupportedException($"Unknown type {shape.Type}"); }
public abstract void Visit(EllipseElement ellipse);
public override void Visit(EllipseElement ellipse) { _graphics.FillEllipse(_brush, ellipse.Rect); }
public EllipseNode(Rectangle rectangle) : base(rectangle.Location.X, rectangle.Location.Y, rectangle.Size.Width, rectangle.Size.Height) { Ellipse = new EllipseElement(rectangle.Location.X, rectangle.Location.Y, rectangle.Size.Width, rectangle.Size.Height); SyncConstructors(); }
public void EllipseHasFieldOrigin() { var sut = new EllipseElement(); Assert.Contains("^FO", sut.ToString()); }
public void EllipseHasFieldSeperator() { var sut = new EllipseElement(); Assert.Contains("^FS", sut.ToString()); }
public void EllipseIsLabelContentElement() { var sut = new EllipseElement(); Assert.IsAssignableFrom <LabelContent>(sut); }
protected void createPdfButton_Click(object sender, EventArgs e) { // Get the server IP and port String serverIP = textBoxServerIP.Text; uint serverPort = uint.Parse(textBoxServerPort.Text); // Create a PDF document Document pdfDocument = new Document(serverIP, serverPort); // Set optional service password if (textBoxServicePassword.Text.Length > 0) { pdfDocument.ServicePassword = textBoxServicePassword.Text; } // Set license key received after purchase to use the converter in licensed mode // Leave it not set to use the converter in demo mode pdfDocument.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c="; // The titles font used to mark various sections of the PDF document PdfFont titleFont = new PdfFont("Times New Roman", 12, true); titleFont.Bold = true; // Create a PDF page in PDF document PdfPage pdfPage = pdfDocument.AddPage(); // Line Elements // Add section title TextElement titleTextElement = new TextElement(5, 5, "Line Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfPage.AddElement(titleTextElement); // Add a line with default properties LineElement lineElement = new LineElement(0, 0, 50, 0); pdfDocument.AddElement(lineElement, 10); // Add a bold line LineElement boldLineElement = new LineElement(0, 0, 50, 0); boldLineElement.LineStyle.LineWidth = 3; pdfDocument.AddElement(boldLineElement, 10, true, false, 0, true, false); // Add dotted line LineElement dottedLineElement = new LineElement(0, 0, 50, 0); dottedLineElement.LineStyle.LineDashStyle = LineDashStyle.Dot; dottedLineElement.ForeColor = RgbColor.Green; pdfDocument.AddElement(dottedLineElement, 10, true, false, 0, true, false); // Add a dashed line LineElement dashedLineElement = new LineElement(0, 0, 50, 0); dashedLineElement.LineStyle.LineDashStyle = LineDashStyle.Dash; dashedLineElement.ForeColor = RgbColor.Green; pdfDocument.AddElement(dashedLineElement, 10, true, false, 0, true, false); // Add a dash-dot-dot line LineElement dashDotDotLineElement = new LineElement(0, 0, 50, 0); dashDotDotLineElement.LineStyle.LineDashStyle = LineDashStyle.DashDotDot; dashDotDotLineElement.ForeColor = RgbColor.Green; pdfDocument.AddElement(dashDotDotLineElement, 10, true, false, 0, true, false); // Add a bold line with rounded cap style LineElement roundCapBoldLine = new LineElement(0, 0, 50, 0); roundCapBoldLine.LineStyle.LineWidth = 5; roundCapBoldLine.LineStyle.LineCapStyle = LineCapStyle.RoundCap; roundCapBoldLine.ForeColor = RgbColor.Blue; pdfDocument.AddElement(roundCapBoldLine, 10, true, false, 0, true, false); // Add a bold line with projecting square cap style LineElement projectingSquareCapBoldLine = new LineElement(0, 0, 50, 0); projectingSquareCapBoldLine.LineStyle.LineWidth = 5; projectingSquareCapBoldLine.LineStyle.LineCapStyle = LineCapStyle.ProjectingSquareCap; projectingSquareCapBoldLine.ForeColor = RgbColor.Blue; pdfDocument.AddElement(projectingSquareCapBoldLine, 10, true, false, 0, true, false); // Add a bold line with projecting butt cap style LineElement buttCapBoldLine = new LineElement(0, 0, 50, 0); buttCapBoldLine.LineStyle.LineWidth = 5; buttCapBoldLine.LineStyle.LineCapStyle = LineCapStyle.ButtCap; buttCapBoldLine.ForeColor = RgbColor.Blue; pdfDocument.AddElement(buttCapBoldLine, 10, true, false, 0, true, false); // Line Join Styles // Add section title titleTextElement = new TextElement(0, 0, "Line Join and Cap Styles", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); // Add graphic path with miter join line style PathElement miterJoinPath = new PathElement(new PointFloat(0, 50)); // Add path lines miterJoinPath.AddLineSegment(new PointFloat(25, 0)); miterJoinPath.AddLineSegment(new PointFloat(50, 50)); // Set path style miterJoinPath.LineStyle.LineWidth = 5; miterJoinPath.LineStyle.LineCapStyle = LineCapStyle.ProjectingSquareCap; miterJoinPath.LineStyle.LineJoinStyle = LineJoinStyle.MiterJoin; miterJoinPath.ForeColor = RgbColor.Coral; pdfDocument.AddElement(miterJoinPath, 5, false, 10, true); // Add graphic path with round join line style PathElement roundJoinPath = new PathElement(new PointFloat(0, 50)); // Add path lines roundJoinPath.AddLineSegment(new PointFloat(25, 0)); roundJoinPath.AddLineSegment(new PointFloat(50, 50)); // Set path style roundJoinPath.LineStyle.LineWidth = 5; roundJoinPath.LineStyle.LineCapStyle = LineCapStyle.RoundCap; roundJoinPath.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; roundJoinPath.ForeColor = RgbColor.Coral; pdfDocument.AddElement(roundJoinPath, 20, true, false, 0, true, false); // Add graphic path with bevel join line style PathElement bevelJoinPath = new PathElement(new PointFloat(0, 50)); // Add lines to path bevelJoinPath.AddLineSegment(new PointFloat(25, 0)); bevelJoinPath.AddLineSegment(new PointFloat(50, 50)); // Set path style bevelJoinPath.LineStyle.LineWidth = 5; bevelJoinPath.LineStyle.LineCapStyle = LineCapStyle.ButtCap; bevelJoinPath.LineStyle.LineJoinStyle = LineJoinStyle.BevelJoin; bevelJoinPath.ForeColor = RgbColor.Coral; // Add element to document pdfDocument.AddElement(bevelJoinPath, 20, true, false, 0, true, false); // Add a polygon with miter join line style PointFloat[] polygonPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(25, 0), new PointFloat(50, 50) }; PolygonElement miterJoinPolygon = new PolygonElement(polygonPoints); // Set polygon style miterJoinPolygon.LineStyle.LineWidth = 5; miterJoinPolygon.LineStyle.LineJoinStyle = LineJoinStyle.MiterJoin; miterJoinPolygon.ForeColor = RgbColor.Green; miterJoinPolygon.BackColor = RgbColor.AliceBlue; pdfDocument.AddElement(miterJoinPolygon, 20, true, false, 0, true, false); // Add a polygon with round join line style polygonPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(25, 0), new PointFloat(50, 50) }; PolygonElement roundJoinPolygon = new PolygonElement(polygonPoints); // Set polygon style roundJoinPolygon.LineStyle.LineWidth = 5; roundJoinPolygon.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; roundJoinPolygon.ForeColor = RgbColor.Green; roundJoinPolygon.BackColor = RgbColor.Blue; pdfDocument.AddElement(roundJoinPolygon, 20, true, false, 0, true, false); // Add a polygon with bevel join line style polygonPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(25, 0), new PointFloat(50, 50) }; PolygonElement bevelJoinPolygon = new PolygonElement(polygonPoints); // Set polygon style bevelJoinPolygon.LineStyle.LineWidth = 5; bevelJoinPolygon.LineStyle.LineJoinStyle = LineJoinStyle.BevelJoin; bevelJoinPolygon.ForeColor = RgbColor.Green; bevelJoinPolygon.BackColor = RgbColor.Blue; pdfDocument.AddElement(bevelJoinPolygon, 20, true, false, 0, true, false); // Add a Graphics Path Element // Add section title titleTextElement = new TextElement(0, 0, "Path Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); // Create the path PathElement graphicsPath = new PathElement(new PointFloat(0, 0)); // Add line and Bezier curve segments graphicsPath.AddLineSegment(new PointFloat(50, 50)); graphicsPath.AddBezierCurveSegment(new PointFloat(100, 0), new PointFloat(200, 100), new PointFloat(250, 50)); graphicsPath.AddLineSegment(new PointFloat(300, 0)); // Close path graphicsPath.ClosePath = true; // Set path style graphicsPath.LineStyle.LineWidth = 3; graphicsPath.LineStyle.LineJoinStyle = LineJoinStyle.MiterJoin; graphicsPath.LineStyle.LineCapStyle = LineCapStyle.RoundCap; graphicsPath.ForeColor = RgbColor.Green; //graphicsPath.BackColor = Color.Green; graphicsPath.Gradient = new GradientColor(GradientDirection.Vertical, RgbColor.LightGreen, RgbColor.Blue); // Add element to document pdfDocument.AddElement(graphicsPath, 5, false, 10, true); // Add Circle Elements // Add section title titleTextElement = new TextElement(0, 0, "Circle Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); // Add a Circle Element with default settings CircleElement circleElement = new CircleElement(30, 30, 30); pdfDocument.AddElement(circleElement, 10); // Add dotted circle element CircleElement dottedCircleElement = new CircleElement(30, 30, 30); dottedCircleElement.ForeColor = RgbColor.Green; dottedCircleElement.LineStyle.LineDashStyle = LineDashStyle.Dot; pdfDocument.AddElement(dottedCircleElement, 10, true, false, 0, true, false); // Add a disc CircleElement discElement = new CircleElement(30, 30, 30); discElement.ForeColor = RgbColor.Green; discElement.BackColor = RgbColor.LightGray; pdfDocument.AddElement(discElement, 10, true, false, 0, true, false); // Add disc with bold border CircleElement discWithBoldBorder = new CircleElement(30, 30, 30); discWithBoldBorder.LineStyle.LineWidth = 5; discWithBoldBorder.BackColor = RgbColor.Coral; discWithBoldBorder.ForeColor = RgbColor.Blue; pdfDocument.AddElement(discWithBoldBorder, 10, true, false, 0, true, false); // Add colored disc with bold border for (int i = 30; i > 0; i = i - 3) { CircleElement coloredDisc = new CircleElement(30, 30, i); coloredDisc.LineStyle.LineWidth = 3; switch ((i / 3) % 7) { case 0: coloredDisc.BackColor = RgbColor.Red; break; case 1: coloredDisc.BackColor = RgbColor.Orange; break; case 2: coloredDisc.BackColor = RgbColor.Yellow; break; case 3: coloredDisc.BackColor = RgbColor.Green; break; case 4: coloredDisc.BackColor = RgbColor.Blue; break; case 5: coloredDisc.BackColor = RgbColor.Indigo; break; case 6: coloredDisc.BackColor = RgbColor.Violet; break; default: break; } if (i == 30) { pdfDocument.AddElement(coloredDisc, 10, true, false, 0, true, false); } else { pdfDocument.AddElement(coloredDisc, 3, true, true, 3, true, false); } } // Add a doughnut CircleElement exteriorNoBorderDisc = new CircleElement(30, 30, 30); exteriorNoBorderDisc.BackColor = RgbColor.Coral; pdfDocument.AddElement(exteriorNoBorderDisc, 40, true, false, -30, true, false); CircleElement interiorNoBorderDisc = new CircleElement(30, 30, 15); interiorNoBorderDisc.BackColor = RgbColor.White; pdfDocument.AddElement(interiorNoBorderDisc, 15, true, true, 15, true, false); // Add a simple disc CircleElement simpleDisc = new CircleElement(30, 30, 30); simpleDisc.BackColor = RgbColor.Green; pdfDocument.AddElement(simpleDisc, 25, true, false, -15, true, false); // Add Ellipse Elements // Add section title titleTextElement = new TextElement(0, 0, "Ellipse Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); // Add an Ellipse Element with default settings EllipseElement ellipseElement = new EllipseElement(50, 30, 50, 30); pdfDocument.AddElement(ellipseElement, 5, false, 10, true); // Add an Ellipse Element with background color and line color EllipseElement ellipseWithBackgroundAndBorder = new EllipseElement(50, 30, 50, 30); ellipseWithBackgroundAndBorder.BackColor = RgbColor.LightGray; ellipseWithBackgroundAndBorder.ForeColor = RgbColor.Green; pdfDocument.AddElement(ellipseWithBackgroundAndBorder, 10, true, false, 0, true, false); // Create an ellipse from multiple Ellipse Arc Elements EllipseArcElement ellipseArcElement1 = new EllipseArcElement(0, 0, 100, 60, 0, 100); ellipseArcElement1.ForeColor = RgbColor.Coral; ellipseArcElement1.LineStyle.LineWidth = 3; pdfDocument.AddElement(ellipseArcElement1, 10, true, false, 0, true, false); EllipseArcElement ellipseArcElement2 = new EllipseArcElement(0, 0, 100, 60, 100, 100); ellipseArcElement2.ForeColor = RgbColor.Blue; ellipseArcElement2.LineStyle.LineWidth = 3; pdfDocument.AddElement(ellipseArcElement2, 0, true, true, 0, true, false); EllipseArcElement ellipseArcElement3 = new EllipseArcElement(0, 0, 100, 60, 180, 100); ellipseArcElement3.ForeColor = RgbColor.Green; ellipseArcElement3.LineStyle.LineWidth = 3; pdfDocument.AddElement(ellipseArcElement3, 0, true, true, 0, true, false); EllipseArcElement ellipseArcElement4 = new EllipseArcElement(0, 0, 100, 60, 270, 100); ellipseArcElement4.ForeColor = RgbColor.Violet; ellipseArcElement4.LineStyle.LineWidth = 3; pdfDocument.AddElement(ellipseArcElement4, 0, true, true, 0, true, false); // Create an ellipse from multiple Ellipse Slice Elements EllipseSliceElement ellipseSliceElement1 = new EllipseSliceElement(0, 0, 100, 60, 0, 90); ellipseSliceElement1.BackColor = RgbColor.Coral; pdfDocument.AddElement(ellipseSliceElement1, 10, true, false, 0, true, false); EllipseSliceElement ellipseSliceElement2 = new EllipseSliceElement(0, 0, 100, 60, 90, 90); ellipseSliceElement2.BackColor = RgbColor.Blue; pdfDocument.AddElement(ellipseSliceElement2, 0, true, true, 0, true, false); EllipseSliceElement ellipseSliceElement3 = new EllipseSliceElement(0, 0, 100, 60, 180, 90); ellipseSliceElement3.BackColor = RgbColor.Green; pdfDocument.AddElement(ellipseSliceElement3, 0, true, true, 0, true, false); EllipseSliceElement ellipseSliceElement4 = new EllipseSliceElement(0, 0, 100, 60, 270, 90); ellipseSliceElement4.BackColor = RgbColor.Violet; pdfDocument.AddElement(ellipseSliceElement4, 0, true, true, 0, true, false); // Add an Ellipse Element with background EllipseElement ellipseWithBackground = new EllipseElement(0, 0, 50, 30); ellipseWithBackground.BackColor = RgbColor.Green; pdfDocument.AddElement(ellipseWithBackground, 10, true, false, 0, true, false); // Add Rectangle Elements // Add section title titleTextElement = new TextElement(0, 0, "Rectangle Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); // Add a Rectangle Element with default settings RectangleElement rectangleElement = new RectangleElement(0, 0, 100, 60); pdfDocument.AddElement(rectangleElement, 10); // Add a Rectangle Element with background color and dotted line RectangleElement rectangleElementWithDottedLine = new RectangleElement(0, 0, 100, 60); rectangleElementWithDottedLine.BackColor = RgbColor.LightGray; rectangleElementWithDottedLine.ForeColor = RgbColor.Green; rectangleElementWithDottedLine.LineStyle.LineDashStyle = LineDashStyle.Dot; pdfDocument.AddElement(rectangleElementWithDottedLine, 10, true, false, 0, true, false); // Add a Rectangle Element with background color without border RectangleElement rectangleElementWithoutBorder = new RectangleElement(0, 0, 100, 60); rectangleElementWithoutBorder.BackColor = RgbColor.Green; pdfDocument.AddElement(rectangleElementWithoutBorder, 10, true, false, 0, true, false); // Add a Rectangle Element with background color, bold border line and rounded corners RectangleElement rectangleElementWithRoundedCorners = new RectangleElement(0, 0, 100, 60); rectangleElementWithRoundedCorners.BackColor = RgbColor.Coral; rectangleElementWithRoundedCorners.ForeColor = RgbColor.Blue; rectangleElementWithRoundedCorners.LineStyle.LineWidth = 5; rectangleElementWithRoundedCorners.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; pdfDocument.AddElement(rectangleElementWithRoundedCorners, 10, true, false, 0, true, false); // Add Polygon Elements // Add section title titleTextElement = new TextElement(0, 0, "Polygon Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); PointFloat[] polygonElementPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(50, 0), new PointFloat(100, 50), new PointFloat(50, 100) }; // Add a Polygon Element with default settings PolygonElement polygonElement = new PolygonElement(polygonElementPoints); pdfDocument.AddElement(polygonElement, 10); polygonElementPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(50, 0), new PointFloat(100, 50), new PointFloat(50, 100) }; // Add a Polygon Element with background color and border polygonElement = new PolygonElement(polygonElementPoints); polygonElement.BackColor = RgbColor.LightGray; polygonElement.ForeColor = RgbColor.Green; polygonElement.LineStyle.LineDashStyle = LineDashStyle.Dot; pdfDocument.AddElement(polygonElement, 10, true, false, 0, true, false); polygonElementPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(50, 0), new PointFloat(100, 50), new PointFloat(50, 100) }; // Add a Polygon Element with background color polygonElement = new PolygonElement(polygonElementPoints); polygonElement.BackColor = RgbColor.Green; pdfDocument.AddElement(polygonElement, 10, true, false, 0, true, false); PointFloat[] polyFillPoints = new PointFloat[] { new PointFloat(0, 50), new PointFloat(50, 0), new PointFloat(100, 50), new PointFloat(50, 100) }; // Add a Polygon Element with background color and rounded line joins PolygonElement polygonElementWithBackgruondColorAndBorder = new PolygonElement(polyFillPoints); polygonElementWithBackgruondColorAndBorder.ForeColor = RgbColor.Blue; polygonElementWithBackgruondColorAndBorder.BackColor = RgbColor.Coral; polygonElementWithBackgruondColorAndBorder.LineStyle.LineWidth = 5; polygonElementWithBackgruondColorAndBorder.LineStyle.LineCapStyle = LineCapStyle.RoundCap; polygonElementWithBackgruondColorAndBorder.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; pdfDocument.AddElement(polygonElementWithBackgruondColorAndBorder, 10, true, false, 0, true, false); // Add Bezier Curve Elements // Add section title titleTextElement = new TextElement(0, 0, "Bezier Curve Elements", titleFont); titleTextElement.ForeColor = RgbColor.Black; pdfDocument.AddElement(titleTextElement, 5, false, 10, true); // Add a Bezier Curve Element with normal style BezierCurveElement bezierCurveElement = new BezierCurveElement(0, 50, 50, 0, 100, 100, 150, 50); bezierCurveElement.ForeColor = RgbColor.Blue; bezierCurveElement.LineStyle.LineWidth = 3; pdfDocument.AddElement(bezierCurveElement, 10); // Add a Bezier Curve Element with dotted line using the controlling points above bezierCurveElement = new BezierCurveElement(0, 50, 50, 0, 100, 100, 150, 50); bezierCurveElement.ForeColor = RgbColor.Green; bezierCurveElement.LineStyle.LineDashStyle = LineDashStyle.Dot; bezierCurveElement.LineStyle.LineWidth = 1; pdfDocument.AddElement(bezierCurveElement, 30, true, false, 0, true, false); // Mark the points controlling the Bezier curve CircleElement controlPoint1 = new CircleElement(0, 0, 10); controlPoint1.BackColor = RgbColor.Violet; controlPoint1.Opacity = 75; pdfDocument.AddElement(controlPoint1, -10, true, true, 40, true, false); CircleElement controlPoint2 = new CircleElement(0, 0, 10); controlPoint2.BackColor = RgbColor.Violet; pdfDocument.AddElement(controlPoint2, 50, true, true, -50, true, false); CircleElement controlPoint3 = new CircleElement(0, 0, 10); controlPoint3.BackColor = RgbColor.Violet; pdfDocument.AddElement(controlPoint3, 50, true, true, 100, true, false); CircleElement controlPoint4 = new CircleElement(0, 0, 10); controlPoint4.BackColor = RgbColor.Violet; pdfDocument.AddElement(controlPoint4, 50, true, true, -50, true, false); // Save the PDF document in a memory buffer byte[] outPdfBuffer = pdfDocument.Save(); // Send the PDF as response to browser // Set response content type Response.AddHeader("Content-Type", "application/pdf"); // Instruct the browser to open the PDF file as an attachment or inline Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Graphic_Elements.pdf; size={0}", outPdfBuffer.Length.ToString())); // Write the PDF document buffer to HTTP response Response.BinaryWrite(outPdfBuffer); // End the HTTP response and stop the current page processing Response.End(); }
public override void Visit(EllipseElement ellipse) { _graphics.DrawEllipse(_pen, ellipse.Rect); }
public LabelBuilder AddEllipse(EllipseElement ellipse) { Context.Content.Add(ellipse ?? throw new ArgumentNullException(nameof(ellipse))); return(this); }
private void btnCreatePdf_Click(object sender, EventArgs e) { // create a PDF document Document document = new Document(); // set the license key document.LicenseKey = "B4mYiJubiJiInIaYiJuZhpmahpGRkZE="; // add a page to the PDF document PdfPage firstPage = document.AddPage(); // draw rectangle RectangleElement rectangle1 = new RectangleElement(10, 10, 150, 100); rectangle1.ForeColor = System.Drawing.Color.Blue; rectangle1.LineStyle.LineWidth = 5; // a 5 points line width rectangle1.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; firstPage.AddElement(rectangle1); // draw colored rectangle RectangleElement rectangle2 = new RectangleElement(200, 10, 150, 100); rectangle2.ForeColor = System.Drawing.Color.Blue; rectangle2.BackColor = System.Drawing.Color.Green; firstPage.AddElement(rectangle2); // draw gradient colored rectangle RectangleElement rectangle3 = new RectangleElement(400, 25, 100, 50); rectangle3.ForeColor = System.Drawing.Color.Blue; rectangle3.Gradient = new GradientColor(GradientDirection.Vertical, System.Drawing.Color.Green, System.Drawing.Color.Blue); firstPage.AddElement(rectangle3); // draw ellipse EllipseElement ellipse1 = new EllipseElement(75, 200, 70, 50); ellipse1.ForeColor = System.Drawing.Color.Blue; ellipse1.LineStyle.LineDashStyle = LineDashStyle.Dash; firstPage.AddElement(ellipse1); // draw ellipse EllipseElement ellipse2 = new EllipseElement(275, 200, 70, 50); ellipse2.ForeColor = System.Drawing.Color.Blue; ellipse2.BackColor = System.Drawing.Color.Green; firstPage.AddElement(ellipse2); // draw ellipse EllipseElement ellipse3 = new EllipseElement(450, 200, 50, 25); ellipse3.ForeColor = System.Drawing.Color.Blue; ellipse3.Gradient = new GradientColor(GradientDirection.Vertical, System.Drawing.Color.Green, System.Drawing.Color.Blue); firstPage.AddElement(ellipse3); BezierCurveElement bezierCurve1 = new BezierCurveElement(10, 350, 100, 300, 200, 400, 300, 350); bezierCurve1.ForeColor = System.Drawing.Color.Blue; bezierCurve1.LineStyle.LineWidth = 3; bezierCurve1.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; firstPage.AddElement(bezierCurve1); BezierCurveElement bezierCurve2 = new BezierCurveElement(10, 350, 100, 400, 200, 300, 300, 350); bezierCurve2.ForeColor = System.Drawing.Color.Green; bezierCurve2.LineStyle.LineWidth = 3; bezierCurve2.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; firstPage.AddElement(bezierCurve2); string outFilePath = System.IO.Path.Combine(Application.StartupPath, "ShapesDemo.pdf"); // save the PDF document to disk document.Save(outFilePath); // close the PDF document to release the resources document.Close(); DialogResult dr = MessageBox.Show("Open the saved file in an external viewer?", "Open Rendered File", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { try { System.Diagnostics.Process.Start(outFilePath); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } } }
protected void btnCreatePDF_Click(object sender, EventArgs e) { // create a PDF document Document document = new Document(); // set the license key document.LicenseKey = "B4mYiJubiJiInIaYiJuZhpmahpGRkZE="; // add a page to the PDF document PdfPage firstPage = document.AddPage(); // draw rectangle RectangleElement rectangle1 = new RectangleElement(10, 10, 150, 100); rectangle1.ForeColor = System.Drawing.Color.Blue; rectangle1.LineStyle.LineWidth = 5; // a 5 points line width rectangle1.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; firstPage.AddElement(rectangle1); // draw colored rectangle RectangleElement rectangle2 = new RectangleElement(200, 10, 150, 100); rectangle2.ForeColor = System.Drawing.Color.Blue; rectangle2.BackColor = System.Drawing.Color.Green; firstPage.AddElement(rectangle2); // draw gradient colored rectangle RectangleElement rectangle3 = new RectangleElement(400, 25, 100, 50); rectangle3.ForeColor = System.Drawing.Color.Blue; rectangle3.Gradient = new GradientColor(GradientDirection.Vertical, System.Drawing.Color.Green, System.Drawing.Color.Blue); firstPage.AddElement(rectangle3); // draw ellipse EllipseElement ellipse1 = new EllipseElement(75, 200, 70, 50); ellipse1.ForeColor = System.Drawing.Color.Blue; ellipse1.LineStyle.LineDashStyle = LineDashStyle.Dash; firstPage.AddElement(ellipse1); // draw ellipse EllipseElement ellipse2 = new EllipseElement(275, 200, 70, 50); ellipse2.ForeColor = System.Drawing.Color.Blue; ellipse2.BackColor = System.Drawing.Color.Green; firstPage.AddElement(ellipse2); // draw ellipse EllipseElement ellipse3 = new EllipseElement(450, 200, 50, 25); ellipse3.ForeColor = System.Drawing.Color.Blue; ellipse3.Gradient = new GradientColor(GradientDirection.Vertical, System.Drawing.Color.Green, System.Drawing.Color.Blue); firstPage.AddElement(ellipse3); BezierCurveElement bezierCurve1 = new BezierCurveElement(10, 350, 100, 300, 200, 400, 300, 350); bezierCurve1.ForeColor = System.Drawing.Color.Blue; bezierCurve1.LineStyle.LineWidth = 3; bezierCurve1.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; firstPage.AddElement(bezierCurve1); BezierCurveElement bezierCurve2 = new BezierCurveElement(10, 350, 100, 400, 200, 300, 300, 350); bezierCurve2.ForeColor = System.Drawing.Color.Green; bezierCurve2.LineStyle.LineWidth = 3; bezierCurve2.LineStyle.LineJoinStyle = LineJoinStyle.RoundJoin; firstPage.AddElement(bezierCurve2); try { // get the PDF document bytes byte[] pdfBytes = document.Save(); // send the generated PDF document to client browser // get the object representing the HTTP response to browser HttpResponse httpResponse = HttpContext.Current.Response; // add the Content-Type and Content-Disposition HTTP headers httpResponse.AddHeader("Content-Type", "application/pdf"); httpResponse.AddHeader("Content-Disposition", String.Format("attachment; filename=Shapes.pdf; size={0}", pdfBytes.Length.ToString())); // write the PDF document bytes as attachment to HTTP response httpResponse.BinaryWrite(pdfBytes); // Note: it is important to end the response, otherwise the ASP.NET // web page will render its content to PDF document stream httpResponse.End(); } finally { // close the PDF document to release the resources document.Close(); } }