如何在黑色圆圈中画出这个红色圆圈?C#

问题描述 投票:0回答:1

我在上面画点 panel1 为Dots&Boxes游戏。我想画出黑色的圆圈和周围的红色,但不知为什么我的红色圆圈有一半画得很好,而另一半却向右移动。我试过不同的偏移量,但如果右边的面板画得很好,那么左边的就不行。10x9的板子; 2x2板

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);

        }
c# paint
1个回答
2
投票

你可以在你的第一个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);
© www.soinside.com 2019 - 2024. All rights reserved.