2

マウスの左ボタンをクリックしてドラッグすると、破線のフレームを描画するWinFormがあります。マウスの左ボタンを離すと、フレームが消えます。ControlPaint.DrawReversibleFrameメソッドでそれを行うことができます。ただし、WinForm内にない場合は、毎回WinFormの外部に描画されます。WinFormではなくペイント領域として画面を使用するcontrolpaintメソッドのようです。私は正しいですか?

私の仮定が正しければ、ペイント領域としてwinformを使用するようにcontrolpaintにどのように指示しますか。

ありがとう、

4

1 に答える 1

1

ControlPaintは、デスクトップに描画することで「チート」を行います。

試してみる回避策は、自分で寸法を監視することです。コントロールの境界に到達したら、それを呼び出すのをやめます。

更新しました:

寸法を正しく変換しているとは限らないようです。

以下は、常にpanel1コントロールに描画する簡単な例です。

private void panel1_Paint(object sender, PaintEventArgs e) { 
  ControlPaint.DrawReversibleFrame(
    new Rectangle(panel1.PointToScreen(new Point(32, 32)), new Size(64, 64)), 
    panel1.BackColor, 
    FrameStyle.Dashed);
}
于 2011-11-02T17:00:42.320 に答える