2

我有一个winform,当您单击鼠标左键并拖动时,我想在其上绘制虚线框。当释放鼠标左键时,框架应该消失。我可以使用 ControlPaint.DrawReversibleFrame 方法来做到这一点。但是,它每次都在 winform 之外而不是在 winform 内绘制。似乎 controlpaint 方法使用屏幕作为绘制区域而不是 winform。我对么?

如果我的假设是正确的,你如何告诉 controlpaint 使用 winform 作为它的绘画区域。

谢谢,

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 回答