Use of GraphAnnotations
1// This example builds upon the basic CreateSimpleGraph '000' example chart //2CreateSimpleGraph(Pego1);3 4// v9.55Pego1.PeUserInterface.Menu.AnnotationControl = true;6Pego1.PeUserInterface.Menu.ShowAnnotationText = MenuControl.Show;7Pego1.PeAnnotation.ShowAnnotationText = true;8 9// simplify chart by reducing subsets //10Pego1.PeData.Subsets = 2;11Pego1.PePlot.Method = GraphPlottingMethod.PointsPlusLine;12Pego1.PePlot.RYAxisComparisonSubsets = 1;13Pego1.PePlot.MethodII = GraphPlottingMethodII.Line;14Pego1.PeTable.Show = GraphPlusTable.Graph;16 17// Add some various graph annotations //18Pego1.PeAnnotation.Show = true;19Pego1.PeFont.GraphAnnotationTextSize = 115;20 21// Controls default placement of all annotations //22Pego1.PeAnnotation.InFront = false;23 24// Give user ability to show or hide annotations //25Pego1.PeUserInterface.Menu.AnnotationControl = true;26 27// Place a symbol //28Pego1.PeAnnotation.Graph.X[0] = 1.5;29Pego1.PeAnnotation.Graph.Y[0] = 1095;30Pego1.PeAnnotation.Graph.Type[0] = (int) GraphAnnotationType.SmallDotSolid;31Pego1.PeAnnotation.Graph.Color[0] = Color.FromArgb(225, 198, 98, 0);32Pego1.PeAnnotation.Graph.Text[0] = "Dot Gradient Shadow";33Pego1.PeAnnotation.Graph.GradientStyle[0] = (int) Gigasoft.ProEssentials.Enums.PlotGradientStyle.RadialTopLeft;34Pego1.PeAnnotation.Graph.Shadow[0] = true;35Pego1.PeAnnotation.Graph.Bold[0] = false;36 37// Draw some lines //'38Pego1.PeAnnotation.Graph.X[1] = 1.5;39Pego1.PeAnnotation.Graph.Y[1] = 1020;40Pego1.PeAnnotation.Graph.Type[1] = (int) GraphAnnotationType.ThinSolidLine;41Pego1.PeAnnotation.Graph.Color[1] = Color.FromArgb(255, 0, 198, 198);42Pego1.PeAnnotation.Graph.Text[1] = "Start";43Pego1.PeAnnotation.Graph.Bold[1] = false;44 45Pego1.PeAnnotation.Graph.X[2] = 2.5;46Pego1.PeAnnotation.Graph.Y[2] = 1120;47Pego1.PeAnnotation.Graph.Type[2] = (int) GraphAnnotationType.LineContinue;48Pego1.PeAnnotation.Graph.Color[2] = Color.Black;49Pego1.PeAnnotation.Graph.Text[2] = "";50 51Pego1.PeAnnotation.Graph.X[3] = 3.5;52Pego1.PeAnnotation.Graph.Y[3] = 1020;53Pego1.PeAnnotation.Graph.Type[3] = (int) GraphAnnotationType.LineContinue;54Pego1.PeAnnotation.Graph.Color[3] = Color.FromArgb(255, 0, 0, 198);55Pego1.PeAnnotation.Graph.Text[3] = "End";56Pego1.PeAnnotation.Graph.Bold[3] = false;57 58// How to draw an ellipse, rectangle, or roundrect. //59Pego1.PeAnnotation.Graph.X[4] = 4.5;60Pego1.PeAnnotation.Graph.Y[4] = 1120;61Pego1.PeAnnotation.Graph.Type[4] = (int) GraphAnnotationType.TopLeft;62Pego1.PeAnnotation.Graph.Color[4] = Color.Black;63Pego1.PeAnnotation.Graph.Text[4] = "";64Pego1.PeAnnotation.Graph.InFront[4] = AnnotationInFront.InFront;65Pego1.PeAnnotation.Graph.Shadow[4] = true;66 67Pego1.PeAnnotation.Graph.X[5] = 5.5;68Pego1.PeAnnotation.Graph.Y[5] = 1020;69Pego1.PeAnnotation.Graph.Type[5] = (int) GraphAnnotationType.BottomRight;70Pego1.PeAnnotation.Graph.Color[5] = Color.Black;71Pego1.PeAnnotation.Graph.Text[5] = "";72Pego1.PeAnnotation.Graph.InFront[5] = AnnotationInFront.InFront;73Pego1.PeAnnotation.Graph.Shadow[5] = true;74 75Pego1.PeAnnotation.Graph.X[6] = 5.5;76Pego1.PeAnnotation.Graph.Y[6] = 1020;77Pego1.PeAnnotation.Graph.Type[6] = (int) GraphAnnotationType.EllipseFill;78Pego1.PeAnnotation.Graph.Color[6] = Color.FromArgb(155, 234, 123, 53);79Pego1.PeAnnotation.Graph.Text[6] = "";80Pego1.PeAnnotation.Graph.InFront[6] = AnnotationInFront.InFront;81Pego1.PeAnnotation.Graph.Shadow[6] = true;82Pego1.PeAnnotation.Graph.GradientStyle[6] = (int)Gigasoft.ProEssentials.Enums.PlotGradientStyle.RadialTopLeft;83 84// Place a polygon //'85Pego1.PeAnnotation.Graph.X[7] = 6.5;86Pego1.PeAnnotation.Graph.Y[7] = 1120;87Pego1.PeAnnotation.Graph.Type[7] = (int) GraphAnnotationType.StartPoly;88Pego1.PeAnnotation.Graph.Color[7] = Color.Black;89Pego1.PeAnnotation.Graph.Text[7] = "";90 91Pego1.PeAnnotation.Graph.X[8] = 7.5;92Pego1.PeAnnotation.Graph.Y[8] = 1120;93Pego1.PeAnnotation.Graph.Type[8] = (int) GraphAnnotationType.AddPolyPoint;94Pego1.PeAnnotation.Graph.Color[8] = Color.Black;95Pego1.PeAnnotation.Graph.Text[8] = "";96 97Pego1.PeAnnotation.Graph.X[9] = 7.5;98Pego1.PeAnnotation.Graph.Y[9] = 1020;99Pego1.PeAnnotation.Graph.Type[9] = (int)GraphAnnotationType.EndPolygonHatchCross; //.EndPolygon;100Pego1.PeAnnotation.Graph.Color[9] = Color.FromArgb(255, 0, 0, 0);101Pego1.PeAnnotation.Graph.Text[9] = "";102 103// Place a paragraph of text //'104Pego1.PeAnnotation.Graph.X[10] = 0;105Pego1.PeAnnotation.Graph.Y[10] = 0;106Pego1.PeAnnotation.Graph.Type[10] = (int) GraphAnnotationType.StartText;107Pego1.PeAnnotation.Graph.Color[10] = Color.Black;108Pego1.PeAnnotation.Graph.Text[10] = "A line of text." + '\n';109 110Pego1.PeAnnotation.Graph.X[11] = 0;111Pego1.PeAnnotation.Graph.Y[11] = 0;112Pego1.PeAnnotation.Graph.Type[11] = (int) GraphAnnotationType.AddText;113Pego1.PeAnnotation.Graph.Color[11] = Color.Black;114Pego1.PeAnnotation.Graph.Text[11] = "Col1 Col2" + '\n';115 116Pego1.PeAnnotation.Graph.X[12] = 0;117Pego1.PeAnnotation.Graph.Y[12] = 0;118Pego1.PeAnnotation.Graph.Type[12] = (int) GraphAnnotationType.AddText;119Pego1.PeAnnotation.Graph.Color[12] = Color.Black;120Pego1.PeAnnotation.Graph.Text[12] = "on off" + '\n';121 122Pego1.PeAnnotation.Graph.X[13] = 7.75;123Pego1.PeAnnotation.Graph.Y[13] = 1050;124Pego1.PeAnnotation.Graph.Type[13] = (int) GraphAnnotationType.Paragraph;125Pego1.PeAnnotation.Graph.Color[13] = Color.FromArgb(255, 88, 88, 88);126Pego1.PeAnnotation.Graph.Text[13] = "";127Pego1.PeAnnotation.Graph.Font[13] = "Courier New";128 129// Draw an Arrow Pointer annotation //130Pego1.PeAnnotation.Graph.X[14] = 2.5;131Pego1.PeAnnotation.Graph.Y[14] = 1130;132Pego1.PeAnnotation.Graph.Type[14] = (int) GraphAnnotationType.PointerArrowMedium;133Pego1.PeAnnotation.Graph.Color[14] = Color.FromArgb(255, 0, 198, 198);134Pego1.PeAnnotation.Graph.Text[14] = "Move toward Start";135Pego1.PeAnnotation.Graph.Shadow[14] = true;136 137// Draw an Arrow annotation //138Pego1.PeAnnotation.Graph.X[15] = 1.5;139Pego1.PeAnnotation.Graph.Y[15] = 1250;140Pego1.PeAnnotation.Graph.Type[15] = (int) GraphAnnotationType.ThinSolidLine;141Pego1.PeAnnotation.Graph.Color[15] = Color.FromArgb(128, 128, 200, 198);142Pego1.PeAnnotation.Graph.Text[15] = "";143 144Pego1.PeAnnotation.Graph.X[16] = 2.5;145Pego1.PeAnnotation.Graph.Y[16] = 1290;146Pego1.PeAnnotation.Graph.Type[16] = (int) GraphAnnotationType.ArrowSolidSmall;147Pego1.PeAnnotation.Graph.Color[16] = Color.FromArgb(128, 128, 200, 198);148Pego1.PeAnnotation.Graph.Text[16] = "";149 150// Place a symbol on right y axis //151 152// Turn on Bounding Box Text //153Pego1.PeAnnotation.Graph.Type[17] = (int)GraphAnnotationType.TextBoundingBox;154Pego1.PeAnnotation.Graph.Color[17] = Color.FromArgb(255, 0, 0, 0);155 156Pego1.PeAnnotation.Graph.X[18] = 11.5;157Pego1.PeAnnotation.Graph.Y[18] = 900;158Pego1.PeAnnotation.Graph.Type[18] = (int) GraphAnnotationType.SmallDotSolid + 1000; // 1000 designates right y axis159Pego1.PeAnnotation.Graph.Color[18] = Color.FromArgb(255, 200, 200, 0);160Pego1.PeAnnotation.Graph.Text[18] = "900 Right Axis";161Pego1.PeAnnotation.Graph.GradientStyle[18] = (int)Gigasoft.ProEssentials.Enums.PlotGradientStyle.RadialTopLeft;162Pego1.PeAnnotation.Graph.Shadow[18] = true;163 164// Turn off Bounding Box Text with 0 color //165Pego1.PeAnnotation.Graph.Type[19] = (int)GraphAnnotationType.TextBoundingBox;166Pego1.PeAnnotation.Graph.Color[19] = Color.FromArgb(0, 0, 0, 0);167 168// Draw Angled Text Annotation // This method forms the angle from data units. Text will follow a data line if located on a data line.169Pego1.PeAnnotation.Graph.X[20] = 1.5;170Pego1.PeAnnotation.Graph.Y[20] = 1250;171Pego1.PeAnnotation.Graph.Type[20] = (int) GraphAnnotationType.NullPen;172Pego1.PeAnnotation.Graph.Color[20] = Color.FromArgb(0, 0, 0, 0);173Pego1.PeAnnotation.Graph.Text[20] = "";174 175Pego1.PeAnnotation.Graph.X[21] = 2.5;176Pego1.PeAnnotation.Graph.Y[21] = 1290;177Pego1.PeAnnotation.Graph.Type[21] = (int)GraphAnnotationType.AngledTextLeftTop; // v10 new justifications;178Pego1.PeAnnotation.Graph.Color[21] = Color.FromArgb(255, 88, 88, 88);179Pego1.PeAnnotation.Graph.Text[21] = "Hello"; // Note, see example 149 for optional method of absolute angled text"180 181// Bitmap Graph Annotation //182 183Pego1.PePlot.Bitmaps.WorkingBitmap = 0;184Pego1.PePlot.Bitmaps.Filename = "tint.png";185Pego1.PePlot.Bitmaps.Style = ResourceBitmapStyle.LargeCentered;186Pego1.PePlot.Bitmaps.ColorizeMode = ResourceBitmapColorizeMode.Tint; // When GraphAnnotationType = this Bitmap, color = GraphAnnotationColor187 188Pego1.PeAnnotation.Graph.Color[22] = Color.FromArgb(255, 215, 0, 215); // Set Color before Type for Bitmaps189Pego1.PeAnnotation.Graph.X[22] = 3.5;190Pego1.PeAnnotation.Graph.Y[22] = 1390;191Pego1.PeAnnotation.Graph.Type[22] = (int)10001; // 10001 plus workingbitmap index192Pego1.PeAnnotation.Graph.Text[22] = "Bitmap as Symbol";193 194Pego1.PePlot.Bitmaps.WorkingBitmap = 1;195Pego1.PePlot.Bitmaps.Filename = "mask.png";196Pego1.PePlot.Bitmaps.Style = ResourceBitmapStyle.MediumCentered;197Pego1.PePlot.Bitmaps.ColorizeMode = ResourceBitmapColorizeMode.Mask; // When GraphAnnotationType = this Bitmap, color = GraphAnnotationColor198 199// Bitmap Graph Annotation //200Pego1.PeAnnotation.Graph.Color[23] = Color.FromArgb(255, 215, 215, 0); // Set Color before Type for Bitmaps201Pego1.PeAnnotation.Graph.X[23] = 5.5;202Pego1.PeAnnotation.Graph.Y[23] = 1390;203Pego1.PeAnnotation.Graph.Type[23] = (int)10002; // 10001 plus workingbitmap index204Pego1.PeAnnotation.Graph.Text[23] = "Bitmap as Symbol";205 206// Note, since the bitmap colors are set for this bitmap index via GraphAnnotations //207// do not set the cell color208 209Pego1.PeAnnotation.Table.Working = 0;210Pego1.PeAnnotation.Table.Rows = 2;211Pego1.PeAnnotation.Table.Columns = 2;212Pego1.PeAnnotation.Table.Location = GraphTALocation.InsideTopLeft;213Pego1.PeAnnotation.Table.Text[0, 0] = "Tint Bitmap";214Pego1.PeAnnotation.Table.Text[1, 0] = "Mask Bitmap";215Pego1.PeAnnotation.Table.Text[0, 1] = "";216Pego1.PeAnnotation.Table.Text[1, 1] = "";217 218Pego1.PeAnnotation.Table.Type[0, 0] = LegendAnnotationType.NoSymbol;219Pego1.PeAnnotation.Table.Type[1, 0] = LegendAnnotationType.NoSymbol;220Pego1.PeAnnotation.Table.Type[0, 1] = (Gigasoft.ProEssentials.Enums.LegendAnnotationType)10001;221Pego1.PeAnnotation.Table.Type[1, 1] = (Gigasoft.ProEssentials.Enums.LegendAnnotationType)10002;222 223// Note, Table Annotations of type bitmap must be previsously defined as graph annotation224// Note, Set Table Annnotations with bitmap types after Graph Annotations with bitmap types225 226Pego1.PeAnnotation.Table.Border = TABorder.SingleLine;227Pego1.PeAnnotation.Table.TextSize = 125;228Pego1.PeAnnotation.Table.Show = true;229 230Pego1.PeAnnotation.InFront = true;231Pego1.PeAnnotation.Graph.TextSize = 150;232Pego1.PeAnnotation.Show = true;233 234Pego1.PeLegend.AnnotationType[0] = 10001;235Pego1.PeLegend.AnnotationText[0] = "Tint";236//Non colorized table or legend annotation bitmaps do not need a color237 238Pego1.PeLegend.AnnotationType[1] = 10002;239Pego1.PeLegend.AnnotationText[1] = "Mask";240 241// Note, LegendAnnotations of type bitmap must be previsously defined as graph annotation242// Note, Set Legend Annnotations with bitmap types after Graph Annotations with bitmap types243 244Pego1.PeFont.SizeLegendCntl = 1.3F; // increase the legend font and symbols245Pego1.PeGrid.Configure.AutoMinMaxPaddingY = 15;246 247Pego1.PeUserInterface.Dialog.AllowWmfExport = false;248Pego1.PeUserInterface.Dialog.AllowEmfExport = false;249 250// Show annotations shadows //251Pego1.PeAnnotation.Graph.ShowShadows = true;252 253// Allow user to move ArrowPointer annotation //254Pego1.PeAnnotation.Graph.Moveable = true;255Pego1.PeUserInterface.HotSpot.GraphAnnotation = AnnotationHotSpot.GraphOnly;256 257// Other various properties //258Pego1.PeColor.BitmapGradientMode = true;259Pego1.PeColor.QuickStyle = QuickStyle.DarkInset;260 261// Generally call ReinitializeResetImage at end **'262Pego1.PeFunction.ReinitializeResetImage();263Pego1.Invalidate();264// Optionally call Pego1.Refresh() if you are not seeing changes immediatelyPego1.PeData.Y[s, p]Click underlined properties to view documentation