none
C# 似AutoCad標注功線功能 RRS feed

  • 問題

  • 小弟最近剛接觸程式,想利用C# WinForm picturebox製作類似AutoCad標註線的功能

    點擊第一次的位置跟第二次的位置畫出直線(Line1),

    點擊第三次:畫出與Line1等長並平行的標註線,頭與尾有虛線延伸相連。

    想請問各位前輩,如何才能讓延伸虛線垂直於標註線跟Line1之間?

    Visual Studio 2017 使用C#

    程式碼如下:

    Point point1, point2, point3;
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                    draw++;
                    graphics = pictureBox1.CreateGraphics();
                    if (draw == 1)//點擊第一次
                    {
                        point1.X = e.X;
                        point1.Y = e.Y;
                    }
                    if (draw == 2)//點擊第二次
                    {
                        point2.X = e.X;
                        point2.Y = e.Y;
                        graphics.DrawLine(new Pen(Color.Red), point1.X, point1.Y, point2.X, point2.Y);
                    }
                    if (draw == 3)//點擊第三次
                    {
                        Pen dash = new Pen(Color.Green);
                        dash.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
                        dash.DashPattern =new float[] {5,5};
                        point3.X = point1.X + (e.X - point2.X);
                        point3.Y = point1.Y + (e.Y - point2.Y);
                        graphics.DrawLine(new Pen(Color.Green), point3.X, point3.Y, e.X,e.Y);
                        graphics.DrawLine(dash, point1.X, point1.Y, point3.X, point3.Y);
                        graphics.DrawLine(dash, point2.X, point2.Y, e.X, e.Y);
                        draw = 0;
                    }
            }

    目前點擊第三點畫出的標註線雖然是有等長平行,但卻不知道要如何平移讓延伸虛線垂直。

    如果哪裡還有遺漏或是沒注意的地方還請見諒。


    • 已編輯 Dong665 2018年9月10日 上午 08:28
    2018年9月10日 上午 08:21