示例#1
0
        public override void Draw(Tekening tek, Graphics gr, PointF loc_co, Vorm[] ref_vormen)
        {
            if (punten.Count != 2)
            {
                return;
            }
            PointF M; float R;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, loc_co, out M, out R);
            PointF Mtek = tek.co_pt(M, gr.DpiX, gr.DpiY);

            float Rtek = R * tek.Schaal * gr.DpiX / 2.54f;

            double hoek1 = (Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek2 = (Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek3 = (Math.Atan2(loc_co.Y - M.Y, loc_co.X - M.X) / Math.PI * 180);

            float start = (float)hoek1;
            float angle = (float)(hoek3 - hoek1);

            if (!((hoek1 < hoek2) & (hoek2 < hoek3)) & !((hoek3 < hoek2) & (hoek2 < hoek1)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }

            gr.DrawArc(GetPen(false), Mtek.X - Rtek, Mtek.Y - Rtek, 2 * Rtek, 2 * Rtek, start, angle);
        }
示例#2
0
        public override void Draw(Tekening tek, Graphics gr, bool widepen, bool fill)
        {
            PointF M; float straal;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, Punten[2].Coordinaat, out M, out straal);
            PointF Mtek = tek.co_pt(new PointF(M.X, M.Y), gr.DpiX, gr.DpiY);

            double a0 = Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180;
            double a1 = Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180;
            double a2 = Math.Atan2(punten[2].Coordinaat.Y - M.Y, punten[2].Coordinaat.X - M.X) / Math.PI * 180;

            float start = (float)a0;
            float angle = (float)(a2 - a0);

            if (!((a0 < a1) & (a1 < a2)) & !((a2 < a1) & (a1 < a0)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }

            if (fill)
            {
                gr.FillPie(GetBrush(gr, tek.Schaal, tek.Offset, false), Mtek.X - straal * tek.Schaal / 2.54f * gr.DpiX, Mtek.Y - straal * tek.Schaal / 2.54f * gr.DpiY, 2 * straal * tek.Schaal / 2.54f * gr.DpiX, 2 * straal * tek.Schaal / 2.54f * gr.DpiY, start, angle);
            }
            gr.DrawPie(GetPen(false), Mtek.X - straal * tek.Schaal / 2.54f * gr.DpiX, Mtek.Y - straal * tek.Schaal / 2.54f * gr.DpiY, 2 * straal * tek.Schaal / 2.54f * gr.DpiX, 2 * straal * tek.Schaal / 2.54f * gr.DpiY, start, angle);
        }
示例#3
0
        public override void Draw(Tekening tek, Graphics gr, PointF loc_co, Vorm[] ref_vormen)
        {
            if (punten.Count != 2)
            {
                return;
            }
            PointF M; float straal;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, loc_co, out M, out straal);
            PointF Mtek = tek.co_pt(new PointF(M.X, M.Y), gr.DpiX, gr.DpiY);

            double a0 = Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180;
            double a1 = Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180;
            double a2 = Math.Atan2(loc_co.Y - M.Y, loc_co.X - M.X) / Math.PI * 180;

            float start = (float)a0;
            float angle = (float)(a2 - a0);

            if (!((a0 < a1) & (a1 < a2)) & !((a2 < a1) & (a1 < a0)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }

            gr.FillPie(GetBrush(gr, tek.Schaal, new PointF(), false), Mtek.X - straal * tek.Schaal / 2.54f * gr.DpiX, Mtek.Y - straal * tek.Schaal / 2.54f * gr.DpiY, 2 * straal * tek.Schaal / 2.54f * gr.DpiX, 2 * straal * tek.Schaal / 2.54f * gr.DpiY, start, angle);
            gr.DrawPie(GetPen(false), Mtek.X - straal * tek.Schaal / 2.54f * gr.DpiX, Mtek.Y - straal * tek.Schaal / 2.54f * gr.DpiY, 2 * straal * tek.Schaal / 2.54f * gr.DpiX, 2 * straal * tek.Schaal / 2.54f * gr.DpiY, start, angle);
        }
示例#4
0
        public override RectangleF Bounds(Graphics gr)
        {
            PointF M; float straal;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, Punten[2].Coordinaat, out M, out straal);
            return(new RectangleF(M.X - straal, M.Y - straal, 2 * straal, 2 * straal));
        }
示例#5
0
        public override RectangleF Bounds(Graphics gr)
        {
            PointF M; float R;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, Punten[2].Coordinaat, out M, out R);

            return(new RectangleF(M.X - R, M.Y - R, 2 * R, 2 * R));
        }
示例#6
0
        public override void Draw(Tekening tek, Graphics gr, bool widepen, bool fill)
        {
            if (punten.Count != 3)
            {
                return;
            }
            PointF M; float R;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, Punten[2].Coordinaat, out M, out R);
            PointF Mtek = tek.co_pt(M, gr.DpiX, gr.DpiY);

            float Rtek = R * tek.Schaal * gr.DpiX / 2.54f;

            double hoek1 = (Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek2 = (Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek3 = (Math.Atan2(punten[2].Coordinaat.Y - M.Y, punten[2].Coordinaat.X - M.X) / Math.PI * 180);

            float start = (float)hoek1;
            float angle = (float)(hoek3 - hoek1);

            if (!((hoek1 < hoek2) & (hoek2 < hoek3)) & !((hoek3 < hoek2) & (hoek2 < hoek1)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }

            Pen pen = (Pen)GetPen(false).Clone();

            if (Geselecteerd)
            {
                Pen selectie = new Pen(Color.Black, pen.Width + 2);
                pen.Width += 1;
                gr.DrawArc(selectie, Mtek.X - Rtek, Mtek.Y - Rtek, 2 * Rtek, 2 * Rtek, start, angle);
                gr.DrawArc(pen, Mtek.X - Rtek, Mtek.Y - Rtek, 2 * Rtek, 2 * Rtek, start, angle);
            }
            else
            {
                if (widepen)
                {
                    pen.Width    += 2;
                    pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                }
                gr.DrawArc(pen, Mtek.X - Rtek, Mtek.Y - Rtek, 2 * Rtek, 2 * Rtek, start, angle);
            }
        }
示例#7
0
        public override void Draw(Graphics gr, float schaal, RectangleF window)
        {
            PointF M; float straal;

            Cirkel.CalcCirkelWaarden(punten[0].Coordinaat, punten[1].Coordinaat, punten[2].Coordinaat, out M, out straal);

            PointF Mtek = new PointF(M.X - window.Left, M.Y - window.Top);

            Mtek   = new PointF(Mtek.X * schaal * 10, Mtek.Y * schaal * 10);
            straal = straal * schaal * 10;

            double a0 = Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180;
            double a1 = Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180;
            double a2 = Math.Atan2(punten[2].Coordinaat.Y - M.Y, punten[2].Coordinaat.X - M.X) / Math.PI * 180;

            float start = (float)a0;
            float angle = (float)(a2 - a0);

            if (!((a0 < a1) & (a1 < a2)) & !((a2 < a1) & (a1 < a0)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }

            Brush br  = GetBrush(gr, schaal, new PointF(-window.Left, -window.Top), true);
            Pen   pen = (Pen)GetPen(true).Clone();

            pen.Width /= 2.54f;

            GraphicsPath path = new GraphicsPath();

            path.AddArc(Mtek.X - straal, Mtek.Y - straal, 2 * straal, 2 * straal, start, angle);
            path.CloseFigure();
            gr.FillPath(br, path);
            gr.DrawPath(pen, path);
        }
示例#8
0
        public override void Draw(Graphics gr, float schaal, RectangleF window)
        {
            if (punten.Count != 3)
            {
                return;
            }

            Pen pen = (Pen)GetPen(true).Clone();

            pen.Width = pen.Width / 2.54f;

            PointF M; float R;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, Punten[2].Coordinaat, out M, out R);

            PointF Mtek = new PointF(M.X - window.Left, M.Y - window.Top);

            Mtek = new PointF(Mtek.X * schaal * 10, Mtek.Y * schaal * 10);
            R    = R * schaal * 10;

            double hoek1 = (Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek2 = (Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek3 = (Math.Atan2(punten[2].Coordinaat.Y - M.Y, punten[2].Coordinaat.X - M.X) / Math.PI * 180);

            float start = (float)hoek1;
            float angle = (float)(hoek3 - hoek1);

            if (!((hoek1 < hoek2) & (hoek2 < hoek3)) & !((hoek3 < hoek2) & (hoek2 < hoek1)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }
            gr.DrawArc(pen, Mtek.X - R, Mtek.Y - R, 2 * R, 2 * R, start, angle);
        }
示例#9
0
        public override Region GetRegion(Tekening tek)
        {
            if (punten.Count != 2)
            {
                return(new Region(new Rectangle(0, 0, 0, 0)));
            }
            Graphics gr = tek.CreateGraphics();
            PointF   M; float R;

            Cirkel.CalcCirkelWaarden(Punten[0].Coordinaat, Punten[1].Coordinaat, Punten[2].Coordinaat, out M, out R);
            PointF Mtek = tek.co_pt(M, gr.DpiX, gr.DpiY);

            float Rtek = R * tek.Schaal * gr.DpiX / 2.54f;

            double hoek1 = (Math.Atan2(punten[0].Coordinaat.Y - M.Y, punten[0].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek2 = (Math.Atan2(punten[1].Coordinaat.Y - M.Y, punten[1].Coordinaat.X - M.X) / Math.PI * 180);
            double hoek3 = (Math.Atan2(Punten[2].Coordinaat.Y - M.Y, Punten[2].Coordinaat.X - M.X) / Math.PI * 180);

            float start = (float)hoek1;
            float angle = (float)(hoek3 - hoek1);

            if (!((hoek1 < hoek2) & (hoek2 < hoek3)) & !((hoek3 < hoek2) & (hoek2 < hoek1)))
            {
                if (angle < 0)
                {
                    angle += 360;
                }
                else
                {
                    angle -= 360;
                }
            }

            GraphicsPath path = new GraphicsPath();

            path.AddArc(Mtek.X - Rtek, Mtek.Y - Rtek, 2 * Rtek, 2 * Rtek, start, angle);
            return(new Region(path));
        }