VB.NET Xorラインを描画するには?

解決


まいける  2005-08-18 01:43:41  No: 91517

VB6で線を描画する際に、DrawMode = 7 とするとXor Pen(2度同じ線を描くと消える)が使用でき、マウスクリックで線を描画する際などのマウスの動きにあわせて未確定線を描画したり、同じくマウスの動きにあわせて十字カーソルを描画する際などには必須でした。VB.NETではDrawModeがないのでこのXorラインが描けません。どのようにしたらよいのでしょうか?


ControlPaint  2005-08-18 08:53:36  No: 91518

ControlPaint.DrawReversibleLine メソッド
でしょうか?


まいける  2005-08-18 20:07:06  No: 91519

>ControlPaint.DrawReversibleLine メソッドでしょうか?

ありがとうございます(号泣)。早速試してみました。
一応希望するようにXorラインが描けたのですが、たとえばPictureboxの中に描くことができません。通常のDrawLineであれば、
Dim g As Graphics = PictureBox1.CreateGraphics()  のようにオブジェクトを取得してPictureBox内に描くと思いますが、このDrawReversibleLine  の場合、いろいろ試しましたがPictureBox内に描くことができません。どのようにすればよろしいのでしょうか?


ガッ  2005-08-18 21:00:35  No: 91520

えーと、見たところControlPaint.DrawReversibleLineは
・特定のコントロールに対して描写するのではなく、
  デスクトップ全体の一部に対して描写する
メソッドのようです。
なので、例えば、
//MSDNから抜粋&加工したC#のサンプル
ControlPaint.DrawReversibleLine(
  PictureBox1.PointToScreen(new Point(0,0)),
  PictureBox1.PointToScreen(new Point(PictureBox1.ClientRectangle.Right, PictureBox1.ClientRectangle.Bottom
)),
  Colors.red);
などとするのでしょう。


ガッ  2005-08-18 21:02:06  No: 91521

>   Colors.red);
これはColor.Redですね(orz


まいける  2005-08-19 00:22:02  No: 91522

おお、すごい!できました(感動&号泣&土下座)
PointToScreenのようなメソッドがあるということ自体知りませんでした。
皆さんすごいですね、何でこんなことがわかるんでしょうか?恐れ入ります。ともあれ大変お世話になりありがとうございました(感謝)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加