VB6では、ピクチャボックスのDrawModeプロパティをvbInvert(6)としてから線を描画することにより表示色を反転して出力できました。.NETでは、ControlPaintクラスのDrawReversibleLineメソッドを使うことで、表示色を反転して線を引くことができます。また、同じくControlPaintクラスのDrawReversibleFrameメソッドで枠を、FillReversibleRectangleメソッドで塗りつぶされた四角を描くことができます。
なおこれらのメソッドは画面に描画し、指定する座標も画面座標です。よって、例えばPictureBoxコントロールでの座標で指定したいのであれば、PointToScreenメソッドなどでクライアント座標から画面座標に変換しなければなりません。
次の例では、ピクチャボックス「PictureBox1」の座標(20, 10)-(200, 100)に反転した線を引いています。
'PictureBox1の(20, 10)-(200, 100)に反転した線を引く 'PictureBox1上の座標を画面座標に変換する Dim startPoint As Point = PictureBox1.PointToScreen(New Point(20, 10)) Dim endPoint As Point = PictureBox1.PointToScreen(New Point(200, 100)) '黒で反転した線を引く ControlPaint.DrawReversibleLine(startPoint, endPoint, Color.Black)
//PictureBox1の(20, 10)-(200, 100)に反転した線を引く //PictureBox1上の座標を画面座標に変換する Point startPoint = PictureBox1.PointToScreen(new Point(20, 10)); Point endPoint = PictureBox1.PointToScreen(new Point(200, 100)); //黒で反転した線を引く ControlPaint.DrawReversibleLine(startPoint, endPoint, Color.Black);
これらのメソッドについては、「コントロールを描画する」でも説明しています。
(この記事は、「.NETプログラミング研究 第54号」で紹介したものを基にしています。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。