2016-04-11 5 views
1

c#を使用すると、2Dカルーセルを実現するための最良の方法は何でしょうか。カルーセル型スクロール

WPFまたはWindowsフォームの方が適切でしょうか。どのようにアニメーション化するのが最善の方法でしょうか?ちょうど徐々にタイマースタイルのチックを使用してピクセルを移動しますか?

のような(擬似コード):

//draw carousel here 
using Timer every tick move the images left slightly 

おかげ

MORE INFO:

私は30枚の画像があるだろうと非常に高速に行くことにしたいと私はそれがスクロールしたいですループを1回または2回繰り返してからランダムなものを選択してください。

答えて

1

WPF最も簡単な方法は、ListBoxを使用してUserControlを作成し、アイテムのコレクションをそのアイテムにバインドすることです。トリックは、あなたがそれらのアイテムをどのように含んでいるかです。

ここで私はしばらく前にコード化されたサンプルがあります:

<ListBox ItemsSource="{Binding Files}" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Single" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
    <ListBox.ItemTemplate> 

    </ListBox.ItemTemplate> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="10" VerticalAlignment="Center" IsItemsHost="True"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemContainerStyle> 

    </ListBox.ItemContainerStyle> 
</ListBox> 

Orientation="Horizontal"ScrollViewer.HorizontalScrollBarVisibility="Auto"でのStackPanelを使用して行うことができるのと同じ。

質問は、弟に知らせてください。

申し訳ありませんが、この部分を逃した:

そして、どのようにそれをアニメーション化するための最良の方法だろうか?ちょうど徐々にタイマースタイルのチックを使用してピクセルを移動しますか?

最も良い方法は、WPFのストーリーボードとアニメーションのクラスを使用することです。一般的な考え方は次のとおりです。

  1. 進む/戻る矢印があります。
  2. クリックした矢印に応じて、最初の項目を削除して新しい項目をリストの最後に追加するか、最後の項目を削除してリストの先頭に項目を挿入します。
  3. アニメーションを使用してアイテムの追加/削除、つまりフェードアウト(または左右にスライド)をシミュレートし、アニメーションが完了したらバインドされたコレクションから実際のアイテムを削除します。

また、バインドされたコレクションは、アイテムの数が可変(私のサンプルでは10)を有し、除去され、追加される次の項目を追跡するために別のコレクションを使用してください。

+0

入力していただきありがとうございますが、私はボタンを欲しません。私はそれが自動的にロールしたいトリガを取得するイベントを使用するつもりです。 – Deckerz

+0

ボタンは必要ありません。カルーセルを左右に移動させる(すなわち、アイテムを追加/削除する)ことは、アイテムの追加/除去を容易に開始することができる。ルーティングされたイベントが必要ですが、イベントを引き起こす原因がどのオブジェクトであるかを知っているので、それを添付することができます。タイマーが必要な場合は、 'System.Windows.Forms'名前空間にあるタイマーを使用し、タイマーが動くたびに開始を実行できます。タイマーは基本的にあなたの前方/後方の矢印になります。カルーセルがどの方向に向かうかを示すフラグを作成して、このフラグを設定するときにこのフラグを設定することもできます。 –

+0

イメージでこれを使用できますか?私。各ボックス/コンテンツはリンクされている画像ですか? – Deckerz