Exemple #1
0
        public void Init(NormPoint p1, NormPoint p2)
        {
            BeginCoord = p1;
            EndCoord   = p2;
            bool tmp;
            int  flag;

            if (Math.Abs(p1.X - p2.X) < Math.Abs(p1.Y - p2.Y))
            {
                R = Math.Abs(p1.X - p2.X) / 2;
                if (p1.Y > p2.Y)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p2.X, p1.Y - flag * Math.Abs(p2.X - p1.X));
            }
            else
            {
                R = Math.Abs(p1.Y - p2.Y) / 2;
                if (p1.X > p2.X)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p1.X - flag * Math.Abs(p1.Y - p2.Y), p2.Y);
            }
            C.UpdateCoord((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
        }
Exemple #2
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();

            a.UpdateCoord(EndCoord.X, BeginCoord.Y);
            b.UpdateCoord(BeginCoord.X, EndCoord.Y);
            screen.drawhighlight(new List <NormPoint> {
                BeginCoord, a, BeginCoord, b, b, EndCoord, EndCoord, a
            });
        }
Exemple #3
0
        public IFigure Rotate(double Phi)
        {
            Line tmp = new Line();

            tmp = this;
            Single    PI = (Single)(Math.PI);
            NormPoint C  = new NormPoint();

            C.UpdateCoord((BeginCoord.X + EndCoord.X) / 2, (BeginCoord.Y + EndCoord.Y) / 2);
            tmp.BeginCoord.UpdateCoord(C.X + (BeginCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (BeginCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (BeginCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (BeginCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.EndCoord.UpdateCoord(C.X + (EndCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (EndCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (EndCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (EndCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            return(tmp);
        }
Exemple #4
0
        public void Init(NormPoint p1, NormPoint p2, System.Drawing.Color Color, float Thick = 1)
        {
            BeginCoord = p1;
            EndCoord   = p2;
            bool tmp;
            int  flag;

            if (Math.Abs(p1.X - p2.X) < Math.Abs(p1.Y - p2.Y))
            {
                R = Math.Abs(p1.X - p2.X) / 2;
                if (p1.Y > p2.Y)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p2.X, p1.Y - flag * Math.Abs(p2.X - p1.X));
            }
            else
            {
                R = Math.Abs(p1.Y - p2.Y) / 2;
                if (p1.X > p2.X)
                {
                    flag = 1;
                }
                else
                {
                    flag = -1;
                }
                EndCoord.UpdateCoord(p1.X - flag * Math.Abs(p1.Y - p2.Y), p2.Y);
            }
            C.UpdateCoord((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
            SelectBorderColor(Color.R, Color.G, Color.B, Color.A);
            SelectLineThick(Thick);
        }
Exemple #5
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();
            NormPoint c = new NormPoint();
            NormPoint d = new NormPoint();

            a.UpdateCoord(BeginCoord.X, BeginCoord.Y);
            b.UpdateCoord(Node3.X, Node3.Y);
            c.UpdateCoord(EndCoord.X, EndCoord.Y);
            d.UpdateCoord(Node4.X, Node4.Y);
            screen.drawhighlight(new List <NormPoint> {
                a, b, b, c, c, d, d, a
            });
        }
Exemple #6
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();
            NormPoint c = new NormPoint();
            NormPoint d = new NormPoint();

            a.UpdateCoord(BeginCoord.X + 0.001, BeginCoord.Y + 0.01 + LineThick / 200);
            b.UpdateCoord(EndCoord.X + 0.001, EndCoord.Y + 0.01 + LineThick / 200);
            c.UpdateCoord(BeginCoord.X - 0.01, BeginCoord.Y - 0.001 + LineThick / 200);
            d.UpdateCoord(EndCoord.X - 0.01, EndCoord.Y - 0.001 + LineThick / 200);
            screen.drawhighlight(new List <NormPoint> {
                a, b, c, d
            });
        }
Exemple #7
0
        public IFigure Rotate(double Phi)
        {
            RightTriangle tmp;

            tmp = this;
            Single    PI = (Single)(Math.PI);
            NormPoint C  = new NormPoint();

            C.UpdateCoord((BeginCoord.X + EndCoord.X) / 2, (BeginCoord.Y + EndCoord.Y) / 2);
            tmp.BeginCoord.UpdateCoord(C.X + (BeginCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (BeginCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (BeginCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (BeginCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.EndCoord.UpdateCoord(C.X + (EndCoord.X - C.X) * Math.Cos(Phi * PI / 180) - (EndCoord.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (EndCoord.X - C.X) * Math.Sin(Phi * PI / 180) + (EndCoord.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.Node3.UpdateCoord(C.X + (Node3.X - C.X) * Math.Cos(Phi * PI / 180) - (Node3.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (Node3.X - C.X) * Math.Sin(Phi * PI / 180) + (Node3.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.Node4.UpdateCoord(C.X + (Node4.X - C.X) * Math.Cos(Phi * PI / 180) - (Node4.Y - C.Y) * Math.Sin(Phi * PI / 180), C.Y + (Node4.X - C.X) * Math.Sin(Phi * PI / 180) + (Node4.Y - C.Y) * Math.Cos(Phi * PI / 180));
            tmp.SelectBorderColor(BorderColor.R, BorderColor.G, BorderColor.B, BorderColor.A);
            tmp.SelectLineThick(LineThick);
            //tmp.Init(tmp.BeginCoord, tmp.EndCoord, BorderColor, LineThick);
            return(tmp);
        }
Exemple #8
0
        public void Highlight(IPaint screen)
        {
            NormPoint a = new NormPoint();
            NormPoint b = new NormPoint();
            NormPoint c = new NormPoint();
            NormPoint d = new NormPoint();

            double CX = (BeginCoord.X + EndCoord.X) / 2;
            double CY = (BeginCoord.Y + EndCoord.Y) / 2;

            a.UpdateCoord(CX + (BeginCoord.X - CX) * 1.1, CY + (BeginCoord.Y - CY) * 1.1);
            d.UpdateCoord(CX + (Node4.X - CX) * 1.1, CY + (Node4.Y - CY) * 1.1);
            c.UpdateCoord(CX + (EndCoord.X - CX) * 1.1, CY + (EndCoord.Y - CY) * 1.1);
            b.UpdateCoord(CX + (Node3.X - CX) * 1.1, CY + (Node3.Y - CY) * 1.1);
            screen.drawhighlight(new List <NormPoint> {
                a, b, b, c, c, d, d, a
            });
        }