从类到表单的图形

本文关键字:图形 表单 | 更新日期: 2023-09-27 18:19:21

好的,所以我需要在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();
 }

从类到表单的图形

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控件(我假设)。

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