如何在黑色圆圈中绘制这个红色圆圈? C#
How to draw this red circles in black circles? C#
我在 panel1
上为 Dots&Boxes 游戏画点。我想在它们周围画黑色圆圈和红色圆圈,但由于某种原因,我的一半红色圆圈画得很好,另一半向右移动。我尝试了不同的偏移量,但如果面板的右侧绘制得很好,那么左侧就不是。
10x9 board; 2x2 board
private void panel1_Paint(object sender, PaintEventArgs e)
{
graphics = e.Graphics;
for (int i = 0; i <= numberOfColumns; i++)
{
for (int j = 0; j <= numberOfRows; j++)
{
graphics.DrawEllipse(new Pen(Color.Black, 1.75f), i * ((panel1.Width-10)/ numberOfColumns), j * ((panel1.Height-10) / numberOfRows), dotWidth, dotHeight);
listOfRectanglesF.Add(new RectangleF((i * panel1.Width-10) / numberOfColumns, j * ((panel1.Height - 10) / numberOfRows),dotWidth,dotHeight));
graphics.FillEllipse(new SolidBrush(Color.Black), i * ((panel1.Width - 10) / numberOfColumns), j * ((panel1.Height - 10) / numberOfRows), dotWidth, dotHeight);
}
}
foreach(RectangleF x in listOfRectanglesF)
{
graphics.DrawEllipse(new Pen(Color.Red, 1f), x.X, x.Y, x.Width, x.Height);
}
您可以在第一个 for 循环中同时绘制它们而忘记第二个 for 循环(删除它):
同样的计算找到绘图起点,然后,x和y位置都减少1,宽度和高度增加2。
希望这对您有所帮助。
graphics.FillEllipse(new SolidBrush(Color.Black), i * ((panel1.Width - 10) / numberOfColumns), j * ((panel1.Height - 10) / numberOfRows), dotWidth, dotHeight);
graphics.DrawEllipse(new Pen(Color.Red, 1f), i * ((panel1.Width-10) / numberOfColumns)-1, j * ((panel1.Height - 10) / numberOfRows)-1, dotWidth+2, dotHeight+2);
我在 panel1
上为 Dots&Boxes 游戏画点。我想在它们周围画黑色圆圈和红色圆圈,但由于某种原因,我的一半红色圆圈画得很好,另一半向右移动。我尝试了不同的偏移量,但如果面板的右侧绘制得很好,那么左侧就不是。
10x9 board; 2x2 board
private void panel1_Paint(object sender, PaintEventArgs e)
{
graphics = e.Graphics;
for (int i = 0; i <= numberOfColumns; i++)
{
for (int j = 0; j <= numberOfRows; j++)
{
graphics.DrawEllipse(new Pen(Color.Black, 1.75f), i * ((panel1.Width-10)/ numberOfColumns), j * ((panel1.Height-10) / numberOfRows), dotWidth, dotHeight);
listOfRectanglesF.Add(new RectangleF((i * panel1.Width-10) / numberOfColumns, j * ((panel1.Height - 10) / numberOfRows),dotWidth,dotHeight));
graphics.FillEllipse(new SolidBrush(Color.Black), i * ((panel1.Width - 10) / numberOfColumns), j * ((panel1.Height - 10) / numberOfRows), dotWidth, dotHeight);
}
}
foreach(RectangleF x in listOfRectanglesF)
{
graphics.DrawEllipse(new Pen(Color.Red, 1f), x.X, x.Y, x.Width, x.Height);
}
您可以在第一个 for 循环中同时绘制它们而忘记第二个 for 循环(删除它):
同样的计算找到绘图起点,然后,x和y位置都减少1,宽度和高度增加2。
希望这对您有所帮助。
graphics.FillEllipse(new SolidBrush(Color.Black), i * ((panel1.Width - 10) / numberOfColumns), j * ((panel1.Height - 10) / numberOfRows), dotWidth, dotHeight);
graphics.DrawEllipse(new Pen(Color.Red, 1f), i * ((panel1.Width-10) / numberOfColumns)-1, j * ((panel1.Height - 10) / numberOfRows)-1, dotWidth+2, dotHeight+2);