1

好的,所以我需要在 C# 中制作一个简单的动画来用作加载图标。这一切都很好,所以让我们以这个正方形为例

   PictureBox square = new PictureBox();
   Bitmap bm = new Bitmap(square.Width, square.Height);
   Graphics baseImage = Graphics.FromImage(bm);
   baseImage.DrawRectangle(Pens.Black, 0, 0, 100, 100);
   square.Image = bm;

因此,我制作了我的动画,这里的一切都正常工作,但后来我意识到我需要将我的动画放在一个班级中,这样我就可以从我的同事程序中调用它来使用动画。这就是问题出现的地方,我上课了,我做的所有事情都是一样的,但是在一个班级而不是表格中,然后我从我的表格中调用了我的班级,但屏幕是空白的,没有动画。为了做到这一点,是否需要传递一些东西?

namespace SpinningLogo
{//Here is the sample of my class
    class test
    {
        public void square()
        {
            PictureBox square = new PictureBox();
            Bitmap bm = new Bitmap(square.Width, square.Height);
            Graphics baseImage = Graphics.FromImage(bm);
            baseImage.DrawRectangle(Pens.Black, 0, 0, 100, 100);
            square.Image = bm;
        }

    }
}
private void button1_Click(object sender, EventArgs e)
{//Here is how I call my class
    Debug.WriteLine("11");
    test square = new test();
    square.square();
 }
4

2 回答 2

1

向您的test班级传递对表格上的引用PictureBox

namespace SpinningLogo
{
    class test
    {
        public void square(PictureBox thePB)
        {
            Bitmap bm = new Bitmap(thePB.Width, thePB.Height);
            Graphics baseImage = Graphics.FromImage(bm);
            baseImage.DrawRectangle(Pens.Black, 0, 0, 100, 100);
            thePB.Image = bm;
        }

    }
}

private void button1_Click(object sender, EventArgs e)
{
    test square = new test();
    square.square(myPictureBox);  //whatever the PictureBox is really named
}

您也可以传递Form自身(使用this),但是您仍然必须标识PictureBox控件(我假设)。

于 2013-06-20T20:12:19.957 回答
0

您应该传递给您的测试类 Form 实例,而不是在测试类中定义 PictureBox。PictureBox 应该是 Form 的字段,通过 Form 实例,您将可以访问您的 PictureBox。

于 2013-06-20T20:07:44.153 回答