SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

アニメーションでスクロールする画像リストの実装

NetAdvantage for .NET 2008 Volume 1 日本語版の新機能

  • このエントリーをはてなブックマークに追加

ヘッダーとアニメーション

 WebImageViewerコントロールのプロパティウィンドウにある「Header」を展開し、「Text」にタイトル文字列を設定し、VisibleプロパティをTrueにします。これで、ウィンドウ上部にタイトルを表示できます。

 また、画像のリストは、ウィンドウタイトル右にあるナビゲーションボタンをクリックするか、画像をマウスでドラッグすると、水平方向にスクロールしていきます。

 このスクロールのアニメーションは、デフォルトでは「Continuous」という設定になっており、連続して画像がスクロールするアニメーションになっています。アニメーションの動作は、他に「NextItem」と「Page」の2種類があり、画像を少しずつ1枚単位で送るアニメーションや、1枚ずつ表示していくアニメーションに切り替えることができます。

 それぞれ、画像の整列方法やアニメーションの速度を設定することができ、これらはプロパティウィンドウの「ScrollAnimations」を展開して表示されるプロパティを使用して設定します。

WebImageViewerコントロールの向きの変更とコードからの画像の設定

 WebImageViewerコントロールのOrientationプロパティを「Vertical」に設定すると、縦にスクロールするWebImageViewerコントロールを使うことができます。

 また、画像の組み込みを「Edit Image Items」ダイアログを使わずに、コードから行うこともできます。

 ここでは、WebImageViewerコントロールをもう1つ配置し、ここにWebサイトのサブディレクトリ「images2」にあるすべての画像ファイルをWebImageViewerコントロールに組み込み、「NavigateUrl」プロパティに画像ファイルへのURLを設定します。

(1)画像ファイル名のリストの作成

 まず、画像のファイル名リストを作成します。これは、System.IO.DirectoryクラスのGetFilesメソッドを使用します。このメソッドは、引数に指定したフォルダ内のすべてのファイル名を一括で取得できます。ただし、引数に指定するパス名はWebサーバの仮想ディレクトリではなく、ファイルシステムのフルパスを指定します。

 ここでは、ドライブJの「\_GENKOU\インフラジスティックス\ NetAdvance2008_AJAXEnabledWebSite\Website_vb\images2」に、Webサーバの仮想ディレクトリが設定されていますので、これを指定しています。

 GetFilesメソッドはファイル名をString型の配列で返してきますので、変数に受取って置きます。

VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Me.IsPostBack Then Return
    ' 画像のリストを取得します
    Dim imgs() As String = _
    System.IO.Directory.GetFiles("J:\_GENKOU\インフラジスティックス\                                      NetAdvance2008_AJAXEnabledWebSite\Website_vb\images2", "*.*")
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (this.IsPostBack) return;

    // 画像のリストを取得します
    string[] imgs =
    System.IO.Directory.GetFiles("J:/_GENKOU/インフラジスティックス/
              NetAdvance2008_AJAXEnabledWebSite/Website_cs/images2", "*.*");

(2)画像ファイルへのURLを生成

 次に、このファイル名を使って、ImageItemオブジェクトを作成し、WebImageViewerコントロールに追加していきます。この操作は、For Each(foreach)ステートメントを使い、ファイル名の配列の要素すべてに対して繰り返し行っていきます。

 まず、GetFileNameメソッドをファイル名の配列に対して実行し、パス名を除くファイル名だけを取得します。

 次に、ImageItemクラスのコンストラクタを使用して、インスタンスを作成します。コンストラクタの引数は3つで、最初の引数で画像ファイルへのパス名を仮想ディレクトリのURLで指定します。そのために、次のようなURL文字列を作成します。

VB.NET
For Each img As String In imgs
    Dim theFile As String = "~/images2/" + System.IO.Path.GetFileName(img)
C#
foreach (string img in imgs)
{
    string theFile = "~/images2/" + System.IO.Path.GetFileName(img);

(3)ImageItemオブジェクトの作成とWebImageViewerへの追加

 このURLを元に、ImageItemクラスのコンストラクタを実行します。残りの引数は、代替テキストとツールヒントを設定します。

 ImageItemオブジェクトが作成できたら、NavigateUrlプロパティに画像ファイルへのURLを設定します。ここでも、NavigateUrlプロパティではURLの先頭に「~/」を付けないでください。

 最後に、WebImageViewerコントロールのImageItemCollectionクラスのaddメソッドで、このコレクションにImageItemオブジェクトを追加して出来上がりです。

VB.NET
        Dim pict As Infragistics.Web.UI.ListControls.ImageItem

        pict = New Infragistics.Web.UI.ListControls.ImageItem(theFile, "", System.IO.Path.GetFileName(img))
        pict.NavigateUrl = "images2/" + System.IO.Path.GetFileName(img)
        Me.WebImageViewer2.Items.Add(pict)
    Next
End Sub
C#
        Infragistics.Web.UI.ListControls.ImageItem pict;

        pict = new Infragistics.Web.UI.ListControls.ImageItem(theFile, "", System.IO.Path.GetFileName(img));
        pict.NavigateUrl = "images2/" + System.IO.Path.GetFileName(img);
        this.WebImageViewer2.Items.Add(pict);
    }
}

次のページ
WebDialogWindowコントロールの実装

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2996 2008/09/10 13:02

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング