예제 #1
0
        private void DrowDividingLine()
        {
            Point[] points = new Point[] { new Point {
                                               X = 440, Y = 0
                                           }, new Point {
                                               X = 440, Y = 423
                                           } };
            Pen      pen     = new Pen(Brushes.Black, 1);
            Graphics MyPaint = SelectedTab.CreateGraphics();

            MyPaint.DrawLines(pen, points);
        }
예제 #2
0
        public void ProcessGuidance(GuidanceGroup guidanceGroup, List <GuidancePattern> guidancePatterns)
        {
            using (var graphics = _spatialViewer.CreateGraphics())
            {
                _drawingUtil = new DrawingUtil(_spatialViewer.Width, _spatialViewer.Height, graphics);

                SetMinMax(guidancePatterns, guidanceGroup.GuidancePatternIds);

                foreach (var id in guidanceGroup.GuidancePatternIds)
                {
                    ProcessGuidancePattern(guidancePatterns, id);
                }
            }
        }
예제 #3
0
        private void DrowFrame(int BtnX)
        {
            Graphics MyFormPaint = CageTPage.CreateGraphics();

            Point[] points = new Point[] {
                new Point {
                    X = BtnX - 10, Y = 60
                },
                new Point {
                    X = BtnX + 70, Y = 60
                },
                new Point {
                    X = BtnX + 70, Y = 180
                },
                new Point {
                    X = BtnX - 10, Y = 180
                },
                new Point {
                    X = BtnX - 10, Y = 60
                }
            };
            Pen pen = new Pen(Brushes.Black, 3);

            MyFormPaint.DrawLines(pen, points);
        }
예제 #4
0
        public void dibujateRP(Graphics g, Bitmap bmp, TabPage tp, int tipo_arco, int tipo_grafo)
        {
            Graphics dbm = tp.CreateGraphics();

            dbm.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            Pen p = new Pen(Color.CornflowerBlue, 4);

            if (tipo_grafo == DIRIGIDA)
            {
                p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
            }

            p.Brush = Brushes.White;
            g.DrawLine(p, po, pd);
            p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;

            switch (tipo_arco)
            {
            case 1:    //retroceso
                p.Brush = Brushes.Red;
                break;

            case 2:    //avance
                p.Brush = Brushes.DodgerBlue;
                break;

            case 3:    //cruzado
                p.Brush = Brushes.GreenYellow;
                break;
            }

            g.DrawLine(p, po, pd);
            dbm.DrawImage(bmp, 0, 0);
        }
        public void ProcessPrescription(Prescription prescription)
        {
            if (prescription is VectorPrescription) //Only Vector currently supported for the Visualizer map
            {
                VectorPrescription vectorPrescription = prescription as VectorPrescription;

                using (var graphics = _spatialViewer.CreateGraphics())
                {
                    _drawingUtil = new DrawingUtil(_spatialViewer.Width, _spatialViewer.Height, graphics);

                    List <Point>         allPoints = new List <Point>();
                    List <List <Point> > projectedPointsPerPolygon = new List <List <Point> >();
                    foreach (Polygon polygon in vectorPrescription.RxShapeLookups.SelectMany(x => x.Shape.Polygons))
                    {
                        List <Point> polygonPoints = new List <Point>();
                        foreach (Point point in polygon.ExteriorRing.Points)
                        {
                            Point projectedPoint = point.ToUtm();
                            allPoints.Add(projectedPoint);
                            polygonPoints.Add(projectedPoint);
                        }
                        projectedPointsPerPolygon.Add(polygonPoints);
                    }
                    _drawingUtil.SetMinMax(allPoints);
                    foreach (List <Point> polygonPoints in projectedPointsPerPolygon)
                    {
                        var screenPolygon = polygonPoints.Select(point => point.ToXy(_drawingUtil.MinX, _drawingUtil.MinY, _drawingUtil.GetDelta())).ToArray();
                        graphics.DrawPolygon(DrawingUtil.B_Black, screenPolygon);
                    }
                }
            }
        }
예제 #6
0
        void refresh_gfx(TabPage tab)
        {
            setup_sizes();
            setup_canvas_scale();

            grafx   = context.Allocate(CreateGraphics(), DRAW_background);
            tabgrfx = tab.CreateGraphics();
        }
예제 #7
0
        public void borrate(Graphics g, Bitmap bmp, TabPage tp)
        {
            Graphics dbm = tp.CreateGraphics();

            dbm.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            Pen borrador = new Pen(Color.White, ANCHO_LINEA + 2);

            g.FillEllipse(borrador.Brush, centro.X - radio, centro.Y - radio, radio * 2, radio * 2);
            g.DrawEllipse(borrador, centro.X - radio, centro.Y - radio, radio * 2, radio * 2);
            dbm.DrawImage(bmp, 0, 0);
        }
예제 #8
0
        public void dibujateAACM(Graphics g, Bitmap bmp, TabPage tp)
        {
            Graphics dbm = tp.CreateGraphics();

            dbm.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            Pen p = new Pen(Color.CornflowerBlue, 4);

            p.Brush = Brushes.White;
            g.DrawLine(p, po, pd);
            p.Brush = Brushes.Orange;
            g.DrawLine(p, po, pd);
            dbm.DrawImage(bmp, 0, 0);
        }
예제 #9
0
        //Dibujado
        public void dibujate(Graphics g, Bitmap bmp, TabPage tp)
        {
            Graphics dbm = tp.CreateGraphics();

            dbm.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            Pen p = new Pen(Color.CornflowerBlue, 4);

            if (this.tipo == DIRIGIDA)
            {
                p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
            }

            g.DrawLine(p, po, pd);
            dbm.DrawImage(bmp, 0, 0);
        }
예제 #10
0
        public void ProcessBoundary(FieldBoundary fieldBoundary)
        {
            using (var graphics = _spatialViewer.CreateGraphics())
            {
                _drawingUtil = new DrawingUtil(_spatialViewer.Width, _spatialViewer.Height, graphics);
                foreach (var polygon in fieldBoundary.SpatialData.Polygons)
                {
                    var projectedPoints = polygon.ExteriorRing.Points.Select(point => point.ToUtm()).ToList();
                    _drawingUtil.SetMinMax(projectedPoints);

                    var screenPolygon = projectedPoints.Select(point => point.ToXy(_drawingUtil.MinX, _drawingUtil.MinY, _drawingUtil.GetDelta())).ToArray();

                    graphics.DrawPolygon(DrawingUtil.B_Black, screenPolygon);
                }
            }
        }
예제 #11
0
        //spusti vykreslovanie mraveniska
        public static void VykresliMraveniskoUvod(Mravenisko mravenisko, TabPage tabPage)
        {
            Graphics graphics;

            graphics = tabPage.CreateGraphics();

            if (mravenisko.ZistiFazaMraveniska() == FazaMraveniska.poNastaveniSmerOtocenia)
            {
                ZistiStarePozicieMravcov(mravenisko);
            }
            if (mravenisko.ZistiFazaMraveniska() == FazaMraveniska.poBojiPrechadzani)
            {
                ZistiNovePozicieMravcov(mravenisko);
                OverenieKorektnostiZakladneZobrazenie(mravenisko.ZistiRozmerMraveniska());
            }

            VykresliMravenisko(mravenisko, graphics, tabPage);
        }
예제 #12
0
        public void dibujate(Graphics g, Bitmap bmp, TabPage tp)
        {
            Graphics dbm = tp.CreateGraphics();

            g.SmoothingMode   = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            dbm.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            Pen pc = new Pen(Color.FromArgb(contorno), ANCHO_LINEA);
            Pen pr = new Pen(Color.FromArgb(relleno), ANCHO_LINEA);

            int dis = 4;

            if (id / 10 > 0)
            {
                dis = 8;
            }

            g.FillEllipse(pr.Brush, centro.X - radio, centro.Y - radio, radio * 2, radio * 2);
            g.DrawEllipse(pc, centro.X - radio, centro.Y - radio, radio * 2, radio * 2);
            g.DrawString(id.ToString(), new Font(FontFamily.GenericSansSerif, 10), pc.Brush, centro.X - dis, centro.Y - 7);
            dbm.Clear(Color.White);
            dbm.DrawImage(bmp, 0, 0);
        }
        /// <summary>
        /// Draws a Red polygon if all values 0, a DarkMagenta polygon if all values the same non-zero value, or else themes Red/DarkOrange/Gold/YellowGreen/LawnGreen/LimeGreen/ForestGreen/DarkGreen.
        /// </summary>
        /// <param name="operation"></param>
        /// <param name="workingDataKey"></param>
        public void ThemeMap(string workingDataKey)
        {
            using (var graphics = _spatialViewer.CreateGraphics())
            {
                graphics.Clear(System.Drawing.Color.White);
                _drawingUtil = new DrawingUtil(_spatialViewer.Width, _spatialViewer.Height, graphics);

                List <Point>  projectedPoints = new List <Point>();
                List <double> doubleValues    = null;
                foreach (SpatialRecord record in _spatialRecords)
                {
                    Point point = record.Geometry as Point;
                    projectedPoints.Add(point.ToUtm());

                    if (_workingDataDictionary.ContainsKey(workingDataKey))
                    {
                        WorkingData         workingData = _workingDataDictionary[workingDataKey];
                        RepresentationValue repValue    = record.GetMeterValue(workingData);
                        if (repValue is NumericRepresentationValue)
                        {
                            NumericRepresentationValue numericValue = repValue as NumericRepresentationValue;
                            if (doubleValues == null)
                            {
                                doubleValues = new List <double>();
                            }
                            doubleValues.Add(numericValue.Value.Value);
                        }
                        else if (repValue is EnumeratedValue)
                        {
                            EnumeratedValue enumValue = repValue as EnumeratedValue;
                            if (enumValue.Representation.Code == "dtRecordingStatus")
                            {
                                if (doubleValues == null)
                                {
                                    doubleValues = new List <double>();
                                }
                                doubleValues.Add(enumValue.Value.Value == "On" ? 1d : -1d);
                            }
                        }
                    }
                }

                if (!projectedPoints.Any())
                {
                    return;
                }

                _drawingUtil.SetMinMax(projectedPoints);
                var screenPolygon = projectedPoints.Select(point => point.ToXy(_drawingUtil.MinX, _drawingUtil.MinY, _drawingUtil.GetDelta())).ToArray();

                if (screenPolygon.All(p => !double.IsNaN(p.X) && !double.IsNaN(p.Y)))
                {
                    if (doubleValues == null)
                    {
                        //WorkingData is not numeric
                        graphics.DrawPolygon(DrawingUtil.B_Black, screenPolygon);
                    }
                    else
                    {
                        if (doubleValues.Max() == doubleValues.Min())
                        {
                            //All values are the same
                            if (doubleValues.Max() <= 0d)
                            {
                                //Zero values
                                graphics.DrawPolygon(DrawingUtil.E_Red, screenPolygon);
                            }
                            else
                            {
                                //Non-zero values
                                graphics.DrawPolygon(DrawingUtil.L_DarkGreen, screenPolygon);
                            }
                        }
                        else
                        {
                            double        max                  = doubleValues.Max();
                            double        min                  = doubleValues.Min();
                            double        average              = doubleValues.Average();
                            List <double> removedZeroValues    = doubleValues.Where(dv => dv != 0).ToList();
                            double        avarageWithoutZeroes = removedZeroValues.Average();
                            if (average != avarageWithoutZeroes)
                            {
                                min = removedZeroValues.Min();
                            }


                            int    i     = 0;
                            double range = (max - min) / 7.0;
                            double e7th  = min;
                            double f7th  = e7th + range;
                            double g7th  = f7th + range;
                            double h7th  = g7th + range;
                            double i7th  = h7th + range;
                            double j7th  = i7th + range;
                            double k7th  = j7th + range;
                            double l7th  = max;

                            foreach (System.Drawing.PointF f in screenPolygon)
                            {
                                double             dbl = i < doubleValues.Count ? doubleValues[i] : 0d; //Values will be in same order as points
                                System.Drawing.Pen pen = DrawingUtil.B_Black;

                                if (dbl <= e7th)
                                {
                                    pen = DrawingUtil.E_Red;
                                }
                                else if (dbl <= f7th)
                                {
                                    pen = DrawingUtil.F_DarkOrange;
                                }
                                else if (dbl <= g7th)
                                {
                                    pen = DrawingUtil.G_Gold;
                                }
                                else if (dbl <= h7th)
                                {
                                    pen = DrawingUtil.H_YellowGreen;
                                }
                                else if (dbl <= i7th)
                                {
                                    pen = DrawingUtil.I_LawnGreen;
                                }
                                else if (dbl <= j7th)
                                {
                                    pen = DrawingUtil.J_LimeGreen;
                                }
                                else if (dbl <= k7th)
                                {
                                    pen = DrawingUtil.K_ForestGreen;
                                }
                                else if (dbl <= l7th)
                                {
                                    pen = DrawingUtil.L_DarkGreen;
                                }

                                graphics.DrawEllipse(pen, new System.Drawing.RectangleF(f.X, f.Y, 2, 2));
                                i++;
                            }
                        }
                    }
                }
            }
        }
예제 #14
0
        private void DibujarEnLienzo(List <Barra> listadoBarras)
        {
            TabPage tabgraficos = ventana.getTabPage();

            //crear lienzo de dibjo
            Graphics g = tabgraficos.CreateGraphics();

            int iAnchoGrafico = getTamanoLienzo().ancho;
            int iAltoGrafico  = getTamanoLienzo().alto;

            Pen   lapiz = new Pen(Color.Black, 1);
            Point puntoOrigenLineaBase = new Point(100, 400);
            Point puntoFinLineaBase    = new Point(600, 400);

            g.DrawLine(lapiz, puntoOrigenLineaBase, puntoFinLineaBase);
            Pen lapizEnBlanco = new Pen(Color.Transparent, 3);

            int iCantidadBarras = listadoBarras.Count;

            int iAvanceX = 100;
            int iAvanceY = 100;

            int iCantidadBarrasDibujo = (iCantidadBarras * 2) + 1;
            int iAnchoBarrasDibujo    = iAnchoGrafico / iCantidadBarrasDibujo;
            int iAltoBarraDibujo      = -1;

            Point     puntoOrigenEnBlanco;
            Size      tamanoEnBlanco;
            Rectangle rectBlanco;

            decimal dValorAnterior = 0;
            decimal dValorActual   = 0;

            Random r = new Random();

            foreach (var item in listadoBarras)
            {
                //Barra en blanco
                puntoOrigenEnBlanco = new Point(iAvanceX, iAvanceY);
                tamanoEnBlanco      = new Size(iAnchoBarrasDibujo, 300);
                rectBlanco          = new Rectangle(puntoOrigenEnBlanco, tamanoEnBlanco);
                g.DrawRectangle(lapizEnBlanco, rectBlanco);
                iAvanceX += iAnchoBarrasDibujo;

                //Barra Real
                //La primera barra real la pinta al 100%
                if (iAltoBarraDibujo == -1)
                {
                    iAltoBarraDibujo = 300;
                    dValorActual     = item.Valor;
                }
                else //A las siguientes barras se les calcula el alto
                {
                    dValorAnterior = dValorActual;
                    dValorActual   = item.Valor;
                    //Punto Origen Y de barra
                    iAvanceY = 400 - (Convert.ToInt32((dValorActual * 300) / dValorAnterior));
                    //Longitud de Barra
                    iAltoBarraDibujo = 400 - iAvanceY;
                }
                Point     puntoOrigenBarra = new Point(iAvanceX, iAvanceY);
                Size      tamanoBarra      = new Size(iAnchoBarrasDibujo, iAltoBarraDibujo);
                Rectangle rectReal         = new Rectangle(puntoOrigenBarra, tamanoBarra);
                //g.DrawRectangle(lapiz, rectReal);

                //Relleno con un color aleatorio
                SolidBrush myBrush = new SolidBrush(Color.FromArgb(r.Next(0, 256), r.Next(0, 256), r.Next(0, 256)));
                g.FillRectangle(myBrush, rectReal);
                g.DrawString(item.Leyenda + " (" + item.Valor + ")", new Font("Arial", 8, FontStyle.Bold, GraphicsUnit.Point), Brushes.Black, rectReal);
                iAvanceX += iAnchoBarrasDibujo;
            }

            if (iCantidadBarras > 0)
            {
                //Barra Final
                puntoOrigenEnBlanco = new Point(iAvanceX, iAvanceY);
                tamanoEnBlanco      = new Size(iAnchoBarrasDibujo, 300);
                rectBlanco          = new Rectangle(puntoOrigenEnBlanco, tamanoEnBlanco);
                g.DrawRectangle(lapizEnBlanco, rectBlanco);
            }
            else
            {
                //Limpiar Lienzo
                g.Clear(Color.White);
            }
        }
예제 #15
0
        //odstrani vykreslenie mraveniska
        public static void VykresliOknoBezSimulacie(TabPage tabPage)
        {
            Graphics graphics = tabPage.CreateGraphics();

            graphics.Clear(Color.White);
        }
예제 #16
0
 public void Setup()
 {
     _tabPage     = new TabPage();
     _graphics    = _tabPage.CreateGraphics();
     _drawingUtil = new DrawingUtil(1050, 1050, _graphics);
 }