C#画房比左边的房子小20%

时间:2016-03-15 09:31:17

标签: c#

我想画一条带有面板的街道,但它不会工作。我希望它有一个循环,但我不能完成它。墙和屋顶必须比左边的房子小20%。

我的代码:

    private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < 5; i++)
        {
            HuisTekenen();
        }
    }
    private void HuisTekenen()
    {
        gebouw();
        dak();
    }
    private void gebouw()
    {
        Graphics paper;
        paper = panel1.CreateGraphics();
        Pen pennetje = new Pen(Color.Green);

        int b = 100;
        int aantal = 0;
        for (int i = 10; aantal <= 5; i += 120)
        {
            paper.DrawRectangle(pennetje, i, 100, b, 150);
            aantal++;
            i = i / 100 * 80;
            b = b / 100 * 80;
        }
    }
    private void dak()
    {
        Graphics paper;
        paper = panel1.CreateGraphics();
        Pen pennetje = new Pen(Color.Red);

        int b = 100;
        int aantal = 0;
        for (int i = 10; aantal <= 5; i+=120)
        {
            paper.DrawLine(pennetje, i, 10 / 100 * 80, i, b);
            paper.DrawLine(pennetje, i, 10 / 100 * 80, i + 100, b);
            aantal++;
            i = i / 100 * 80;
            b = 100 / 100 * 80;
        }
    }

我想得到的结果: The result i want to get

我得到的结果: enter image description here

你能帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

这是开始使用这个盒子的方法。你必须自己完成你的作业。

    float size = 50;
    float xpos = 0;
    float ypos = 0;
    for(int i=0;i<5;i++) //whatever you do, this must be what your loop looks like. anything else is going way off in the wrong direction
    {
        paper.DrawRectangle(pennetje, xpos, ypos, size, size);
        xpos += size + 20;
        size *= .8f;
    }

答案 1 :(得分:0)

首先评论一下:你的for - 语句很奇怪,通常这三个部分会使用相同的变量。它可以这样工作,但肯定不会这样做。

另一种问题是这句话:

i = i / 100 * 80;

变量iint/执行整数除法,第一部分i / 100将产生 0 < / strong>因为这是最接近real / float结果的int值。当然,将0乘以80将无能为力。

我建议你现在再试一次: - )