0
我有小圖片爲一個圓,我想作以下:如何在Windows中用戶點擊實例的圖像形成
如果點擊我的窗體上的一些地方,我想補充的是一個新實例如果在那裏沒有其他的圈子,那就圈在那裏。
我正在考慮一個圈子列表,當點擊發生時,我檢查列表以查看它的所有圈子在添加新圈子之前是否重疊,但是我沒有任何形式的經驗,所以我沒有知道什麼是最好的方法。
我有小圖片爲一個圓,我想作以下:如何在Windows中用戶點擊實例的圖像形成
如果點擊我的窗體上的一些地方,我想補充的是一個新實例如果在那裏沒有其他的圈子,那就圈在那裏。
我正在考慮一個圈子列表,當點擊發生時,我檢查列表以查看它的所有圈子在添加新圈子之前是否重疊,但是我沒有任何形式的經驗,所以我沒有知道什麼是最好的方法。
你可以建立一個GraphicsPath
並用IsVisible
方法檢查點擊點是否在其任何部分內。
這段代碼還建立了一個點列表,並在Paint事件中爲每個點繪製圖像。如果您讓GraphicsPath
執行繪圖,請取消對DrawPath
行的註釋並刪除這些與列表相關的行。
GraphicsPath GP = new GraphicsPath();
List<Point> PL = new List<Point>(); //**
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
int diameter = 22; // put in the size of your circle
Size s = new Size(diameter, diameter);
if (!GP.IsVisible(e.Location))
{
Point middle = new Point(e.X - diameter/2, e.Y - diameter/2);
GP.AddEllipse(new Rectangle(middle, s));
PL.Add(middle); //**
}
this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// e.Graphics.DrawPath(Pens.Firebrick, GP);
Image img = new Bitmap("D:\\circle22.png"); //**
foreach(Point pt in PL) e.Graphics.DrawImage(img, pt); //**
img.Dispose(); //**
}
你解決了你的問題嗎? – TaW
是的,我實例化了一個新的PictureBox並使用了Controls.Add(new_box); 我沒有解釋的權利,我有一個PNG的圓形圖像,我不想畫它。 – nightshade
那麼這並沒有太大的區別;你仍然可以使用我的代碼來進行檢查,只需要稍微改變一下:省略整個Paint事件,並在if子句中添加(new_box)。 – TaW