* このサンプル・コードを試すには、まずVisual Studio 2005で「Windows アプリケーション」の新規プロジェクトを作成する。そしてフォームをダブルクリックしてコードを開き、自動作成されているForm1_Loadメソッドを削除してから、このサンプル・コードをコピー&ペーストすればよい。
Image bitmap;
private void Form1_Load(object sender, EventArgs e) {
// Webからビットマップを取得
using (System.Net.WebClient wc = new System.Net.WebClient())
using (System.IO.Stream stream = wc.OpenRead(
"http://www.atmarkit.co.jp/fdotnet/images/fdotnet_m.gif")) {
bitmap = new Bitmap(stream);
}
// リサイズ時に自動的に再描画させる
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
// 10度ずつ回転させながらビットマップを描画
for (int i = 0; i < 360; i += 10) {
e.Graphics.RotateTransform(10);
e.Graphics.DrawImage(bitmap, 0, 0);
}
}
Dim bitmap As Image
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
' Webからビットマップを取得
Using wc As New System.Net.WebClient
Using st As System.IO.Stream = wc.OpenRead( _
"http://www.atmarkit.co.jp/fdotnet/images/fdotnet_m.gif")
bitmap = New Bitmap(st)
End Using
End Using
' リサイズ時に自動的に再描画させる
Me.SetStyle(ControlStyles.ResizeRedraw, True)
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
Dim scale As Single = _
CSng(Me.ClientSize.Width) / CSng(bitmap.Width) / 2.0F
e.Graphics.TranslateTransform( _
Me.ClientSize.Width / 2, Me.ClientSize.Height / 2)
e.Graphics.ScaleTransform(scale, scale)
' 10度ずつ回転させながらビットマップを描画
For i As Integer = 0 To 360 Step 10
e.Graphics.RotateTransform(10)
e.Graphics.DrawImage(bitmap, 0, 0)
Next
End Sub
// 10度ずつ回転させながらビットマップを描画
for (int i = 0; i < 360; i += 10) {
e.Graphics.RotateTransform(10);
e.Graphics.DrawImage(bitmap, 0, 0);
}
}
Dim bitmap As Image
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
' Webからビットマップを取得
Using wc As New System.Net.WebClient
Using st As System.IO.Stream = wc.OpenRead( _
"http://www.atmarkit.co.jp/fdotnet/images/fdotnet_m.gif")
bitmap = New Bitmap(st)
End Using
End Using
' リサイズ時に自動的に再描画させる
Me.SetStyle(ControlStyles.ResizeRedraw, True)
' ダブル・バッファリングをONにする Me.DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
Dim scale As Single = _
CSng(Me.ClientSize.Width) / CSng(bitmap.Width) / 2.0F
e.Graphics.TranslateTransform( _
Me.ClientSize.Width / 2, Me.ClientSize.Height / 2)
e.Graphics.ScaleTransform(scale, scale)
' 10度ずつ回転させながらビットマップを描画
For i As Integer = 0 To 360 Step 10
e.Graphics.RotateTransform(10)
e.Graphics.DrawImage(bitmap, 0, 0)
Next
End Sub