画面からDrawReversibleFrameを削除する際に問題があります。ドキュメントは、それを削除する機能を2回入力すると言うが、それは私のロジックレイアウトではうまくいかないようだ。画面からDrawReversibleFrameを消去しています
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp6
{
public partial class Form1 : Form
{
private Point? _start;
private Rectangle _previousBounds;
public Form1()
{
InitializeComponent();
}
private void OnMouseDown(object sender,MouseEventArgs e)
{
_start = e.Location;
}
private void OnMouseMove(object sender,MouseEventArgs e)
{
if (_start.HasValue)
{
ReverseFrame();
DrawFrame(e.Location);
}
}
private void OnMouseUp(object sender,MouseEventArgs e)
{
ReverseFrame();
_start = null;
}
private void ReverseFrame()
{
ControlPaint.DrawReversibleFrame(_previousBounds, Color.Red, FrameStyle.Dashed);
}
private void DrawFrame(Point end)
{
ReverseFrame();
var size = new Size(end.X - _start.Value.X, end.Y - _start.Value.Y);
_previousBounds = new Rectangle(_start.Value, size);
_previousBounds = RectangleToScreen(_previousBounds);
ControlPaint.DrawReversibleFrame(_previousBounds, Color.Red, FrameStyle.Dashed);
}
}
}
フォームにマウスをドラッグしたときの結果です。 http://imgur.com/a/Kh4h7
私がやっているような気がするように、ぺスコのコードはうまくいくはずです。
MouseDown:
描画矩形。
矩形の境界を保存します。
-
のMouseMove(W /左ボタンダウン):
消去する前四角形を再描画。
次の矩形を計算します。
次の矩形を描画します。
矩形の境界を保存します。
リンス/リピート(無期限)
-
のMouseUp:
消去する最後の四角形を再描画します。
ReverseFrame()の*最初の呼び出しが無効であることを覚えておく必要があります。まだ逆転するものはないから。 –