簡體   English   中英

單擊兩個新點並使用鼠標事件在這兩個點之間繪制一條線

[英]Click two new points and draw a line between those two points using mouse event

有關如何通過單擊兩個新點創建一條線然后在它們之間畫一條線的建議嗎? 我正在嘗試創建一個像adobe雜技演員那樣的距離工具。

圖像示例

替代文字

問題解決了!

編輯:這是代碼:

private Point p1, p2;
List<Point> p1List = new List<Point>();
List<Point> p2List = new List<Point>();

    private void Panel1_MouseDown(object sender, MouseEventArgs e)
    {
        if (p1.X == 0)
        {
            p1.X = e.X;
            p1.Y = e.Y;
        }
        else
        {
            p2.X = e.X;
            p2.Y = e.Y;

            p1List.Add(p1);
            p2List.Add(p2);

            Invalidate();
            p1.X = 0;
        }
    }

    private void Panel1_Paint(object sender, PaintEventArgs e)
    {
        using(var p = new Pen(Color.Blue, 4))
        {
            for(int x = 0; x<p1List.Count; x++){
                e.Graphics.DrawLine(p, p1List[x], p2List[x]);
            }
        }
    }

您可以在面板上處理鼠標單擊事件(例如)並檢索單擊的位置(使用事件參數)。 將此位置存儲在屬性中。 根據需要為這么多點做到這一點。 在面板繪制事件中,調用父繪制,然后在點之間繪制線條。

這樣的事情應該這樣做:

Point firstPoint;
Point seondPoint;

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
    if (this.firstPoint == null) {
        this.firstPoint = e.Location;
    }

    if (this.secondPoint == null) {
        this.secondPoint = e.Location;
    }

    panel1.Invalidate();
}

private void panel1_Paint_1(object sender, PaintEventArgs e)
{       
    Using (pn as new Pen(Color.Blue, 5))
    {
        e.Graphics.DrawLine(pn, firstPoint, secondPoint);
    }
}

編輯:你也不需要做CreateGraphics來畫線 - 在Paint事件中你已經有了一個圖形對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM