5

クリックすると、背景画像が一連の画像を循環するボタンを持つC#のフォームがあります(プロジェクトのリソースとして持っています)。画像には「_1」、「_2」などの名前が付けられており、ボタンをクリックするたびに、背景画像が次の画像に増加し、最高になると「_1」に戻ります。これを行う方法はありますか?

取得しようとしましたが、思っていたのbutton1.BackgroundImage.ToString()とは異なり、結果が得られました(その場合、最後の文字を取得してそれをオンにして、背景を適切な新しい画像に変更できました)。System.Drawing.BitmapResources._1

ご協力いただきありがとうございます。

4

3 に答える 3

3

画像を配列に入れてみませんか?

于 2008-08-18T18:43:32.930 に答える
0

Button をサブクラス化し、BackgroundImage プロパティをオーバーライドして、画像を表す現在のリソースをより適切に追跡できます。onclick メソッドをオーバーライドして、次の画像への循環を内部的に処理することもできますが、リソースが派生ボタン クラスの外部で処理される場合は少し奇妙になるかもしれません。

于 2008-08-18T18:49:05.557 に答える
0
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 億回以上クリックしないという前提の下で、このコードをコントロールのバッキング クラスとして使用できます。

このクラスが作成されると、指定されたイメージ リストを外部で変更できないことに注意してください。そのようなことをしたい場合は、使い捨てパターンを実装し、それに応じて列挙子を破棄する必要があります。

于 2012-09-30T09:32:51.730 に答える