| | タイトル | : Re: System.Drawing.Graphics.DrawLine メソッドについて |  | 記事No | : 8317 |  | 投稿日 | : 2008/10/15(Wed) 10:42 |  | 投稿者 | : 魔界の仮面弁士 | 
 そもそも、使用している命令が間違っています。
 .NET の「DrawLine メソッド」は『直線の描画』を意味します。すなわち
 .DrawLine(Pens.Black, X1, Y1, X2, Y2)
 というメソッドは、VB6 でいうところの
 Line (X1, Y1)-(X2, Y2), vbBlack
 に相当する命令です。
 
 
 しかし今回使用するのは、BF 指定(Box-Fill)すなわち『矩形の塗り潰し』ですよね。VB6 の
 Line (X1, Y1)-(X2, Y2), vbBlack, BF
 に相当する .NET のコードは、DrawLine ではなく
 .FillRectangle(Brushes.Black, X1, Y1, X2, Y2)
 のように、「FillRectangle メソッド」を使う事になります。
 
 ちなみに VB6 の B 指定(Box)すなわち『矩形の枠線描画』を行うのであれば、
 「DrawRectangle メソッド」を使う事になります。
 
 
 Public Class Form1
 Private downPos As Point = Point.Empty
 Private upPos As Point = Point.Empty
 
 Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseDown
 If e.Button = System.Windows.Forms.MouseButtons.Left Then
 downPos = e.Location
 upPos = downPos
 End If
 End Sub
 
 Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseUp
 If e.Button = System.Windows.Forms.MouseButtons.Left Then
 upPos = e.Location
 Me.Invalidate()
 End If
 End Sub
 
 Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles Me.Paint
 If upPos <> downPos Then
 Dim bounds As New Rectangle( _
 New Point(Math.Min(downPos.X, upPos.X), Math.Min(downPos.Y, upPos.Y)), _
 New Size(Math.Abs(downPos.X - upPos.X), Math.Abs(downPos.Y - upPos.Y)))
 e.Graphics.FillRectangle(Brushes.Black, Bounds)
 End If
 End Sub
 End Class
 
 |