WPFの描画
各地でコントロールの描画について話題になっていたのでWPFを使ってCheckBoxを400個ほど表示してみました。(追記)サンプルを修正しました。
ウィンドウのリサイズは自動的にサイズ調整するので重いですが、描画自体は軽いと思います。比較対象がないので感覚に過ぎませんが。2000個のチェックボックスに対するチェックの切り替えに1秒強くらいでした(Athlon64 2.2GHz+GeForce FX 5700)。しかし、XAMLのサンプルは見かけますがソースコードのサンプルが少なくて、意外と手こずりました。(^^;
using System; using System.Windows; using System.Windows.Controls; namespace MyFirstAvalonApp { public partial class Window1 : Window { const int ROWS = 50; const int COLS = 40; Grid grid; public Window1 () { this.Title = "CheckBox Sample"; grid = new Grid (); for (int i = 0; i < COLS; ++i) { ColumnDefinition cd = new ColumnDefinition (); grid.ColumnDefinitions.Add (cd); } for (int i = 0; i < ROWS; ++i) { RowDefinition rd = new RowDefinition (); grid.RowDefinitions.Add (rd); } for (int i = 0; i < ROWS; ++i) { for (int j = 0; j < COLS; ++j) { CheckBox cb = new CheckBox (); cb.Content = String.Format("{0},{1}", i, j); cb.IsChecked = true; Grid.SetRow (cb, i); Grid.SetColumn (cb, j); grid.Children.Add (cb); } } Button button = new Button (); button.Content = "Click me"; button.Click += OnClick; DockPanel dp = new DockPanel (); DockPanel.SetDock (button, Dock.Bottom); dp.Children.Add (button); dp.Children.Add (grid); this.AddChild (dp); } void OnClick (object sender, RoutedEventArgs e) { foreach (CheckBox cb in grid.Children) cb.IsChecked = !cb.IsChecked; } } }