代码之家  ›  专栏  ›  技术社区  ›  Justin Bennett

C中的循环按钮背景图像#

  •  5
  • Justin Bennett  · 技术社区  · 18 年前

    我有一个C#中的表单,它有一个按钮,当单击该按钮时,我希望背景图像在一组图像中循环(我将这些图像作为项目的资源)。这些图像被命名为“_1”、“_2”等,每次我点击按钮时,我都希望它的背景图像递增到下一个,当它达到最高值时回到“_1”。有办法做到这一点吗?

    我试着得到 button1.BackgroundImage.ToString() 但这会产生 System.Drawing.Bitmap 而不是 Resources._1 就像我想的那样(在这种情况下,我可以只获取最后一个字符并打开它,将背景更改为适当的新图像)。

    谢谢你的帮助。

    3 回复  |  直到 18 年前
        1
  •  3
  •   Landon    18 年前

    你为什么不把图像放在一个数组中呢?

        2
  •  0
  •   Chris Farmer Marcelo Cantos    18 年前

    您可以子类化Button并覆盖BackgroundImage属性,以便更好地跟踪表示图像的当前资源。您还可以重写onclick方法,以在内部处理循环到下一个图像,尽管如果资源在派生按钮类之外处理,这可能会有点奇怪。

        3
  •  0
  •   zahir    14 年前
    class YourClass
    {
        private IEnumerator<Image> enumerator;
    
        YourClass(IEnumerable<Image> images)
        {
            enumerator = (from i in Enumerable.Range(0, int.Max)
                          from image in images
                          select image).GetEnumerator();
            enumerator.MoveNext();
        }
    
        public Image CurrentImage { get { return enumerator.Current; } }
    
        public void OnButtonClick() { enumerator.MoveNext(); }
    }
    

    假设用户不会点击按钮超过20亿次,您可以将此代码用作控件的支持类。

    请注意,一旦创建了此类,您就无法在外部修改给定的图像列表。如果你想做这些事情,你需要实现一次性模式并相应地处理枚举器。

    推荐文章