我有一个winform,当您单击鼠标左键并拖动时,我想在其上绘制虚线框。当释放鼠标左键时,框架应该消失。我可以使用 ControlPaint.DrawReversibleFrame 方法来做到这一点。但是,它每次都在 winform 之外而不是在 winform 内绘制。似乎 controlpaint 方法使用屏幕作为绘制区域而不是 winform。我对么?
如果我的假设是正确的,你如何告诉 controlpaint 使用 winform 作为它的绘画区域。
谢谢,
我有一个winform,当您单击鼠标左键并拖动时,我想在其上绘制虚线框。当释放鼠标左键时,框架应该消失。我可以使用 ControlPaint.DrawReversibleFrame 方法来做到这一点。但是,它每次都在 winform 之外而不是在 winform 内绘制。似乎 controlpaint 方法使用屏幕作为绘制区域而不是 winform。我对么?
如果我的假设是正确的,你如何告诉 controlpaint 使用 winform 作为它的绘画区域。
谢谢,
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);
}