Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 面板使用的绘图方法_C# - Fatal编程技术网

C# 面板使用的绘图方法

C# 面板使用的绘图方法,c#,C#,我正在C#中创建垄断游戏,这是我的第一个更大的项目。游戏由场地(城市、事件等)面板组成。播放器被表示为面板上绘制的矩形,这是一个问题。位置表存储每个球员的位置信息,然后我在每个面板的绘制方法中比较表中的每个元素(有21个面板,给出84个“如果”语句)。例如: private void panel4_Paint(object sender, PaintEventArgs e) { g = e.Graphics; Pen redpen = new Pen(Co

我正在C#中创建垄断游戏,这是我的第一个更大的项目。游戏由场地(城市、事件等)面板组成。播放器被表示为面板上绘制的矩形,这是一个问题。位置表存储每个球员的位置信息,然后我在每个面板的绘制方法中比较表中的每个元素(有21个面板,给出84个“如果”语句)。例如:

private void panel4_Paint(object sender, PaintEventArgs e)
    {
        g = e.Graphics;
        Pen redpen = new Pen(Color.Red, 5);
        Rectangle rectangle = new System.Drawing.Rectangle(10, 10, 120, 120);
        g.DrawEllipse(redpen, rectangle);

        if (position[0] == 3)
        {
            g.FillRectangle(blackbrush, new Rectangle(110, 110, 20, 20));
        }
        if (position[1] == 3)
        {
            g.FillRectangle(yellowbrush, new Rectangle(80, 110, 20, 20));
        }
        if (position[2] == 3)
        {
            g.FillRectangle(redbrush, new Rectangle(50, 110, 20, 20));
        }
        if (position[3] == 3)
        {
            g.FillRectangle(bluebrush, new Rectangle(20, 110, 20, 20));
        }

    }

有没有更短的方法来实现这一点?我计划添加房屋和酒店,因此变得更加复杂。

考虑使用一个或多个矩形列表。。另外:您可以将所有面板的绘制事件组合为一个,并使用
sender
参数来区分它们。从控件派生您自己的类,称之为monopolitile。重写其OnPaint()方法。添加标题、图像、方向、房屋、酒店、玩家属性,以及您需要的其他内容。我认为您可以使用网格,然后可以使用具有相同尺寸的矩形,这样您就可以创建如下方法:putHotel(int row,int column){rectangle r=new rectangle(20,20,20,20}…mygrid.Children.Add(r)}