【发布时间】:2016-11-15 16:42:11
【问题描述】:
实际上,点击每个圆圈后,我希望它的颜色发生变化,例如,我希望它变成红色,总的来说,我想把它当作控制。
当我双击图片框时,我知道如何绘制代表图形节点的圆圈。我正在使用以下代码:
public Form1()
{
InitializeComponent();
pictureBox1.Paint += new PaintEventHandler(pic_Paint);
}
public Point positionCursor { get; set; }
private List<Point> points = new List<Point>();
public int circleNumber { get; set; }
private void pictureBox1_DoubleClick(object sender, EventArgs e)
{
positionCursor = this.PointToClient(new Point(Cursor.Position.X - 25, Cursor.Position.Y - 25));
points.Add(positionCursor);
Label lbl = new Label();
lbl.BackColor = Color.Transparent;
lbl.Font = new Font("Arial", 7);
lbl.Size = new Size(20, 15);
if (circleNumber >= 10)
{
lbl.Location = new Point(points[circleNumber].X + 3, points[circleNumber].Y + 6);
}
else
{
lbl.Location = new Point(points[circleNumber].X + 7, points[circleNumber].Y + 7);
}
lbl.Text = circleNumber.ToString();
pictureBox1.Controls.Add(lbl);
circleNumber++;
pictureBox1.Invalidate();
}
private void pic_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
using (var pen = new Pen(Color.DimGray, 2))
{
foreach (Point pt in points)
{
g.FillEllipse(Brushes.White, pt.X, pt.Y, 25, 25);
g.DrawEllipse(pen, pt.X, pt.Y, 26, 26);
}
}
}
【问题讨论】:
-
如果你需要它是一个控件,然后制作一个绘制圆圈的控件.. 然后你制作新的控件并将它放在窗体上而不是画一个圆圈
-
您需要对圆圈进行命中测试,然后如果命中测试点在圆圈中,则将其绘制为红色。
-
@BugFinder,你的意见,我让用户控制。
-
@RezaAghaei,对不起,我没有。
标签: c# .net winforms gdi+ picturebox