为什么controlpaint draw方法在其客户端绘制区域之外绘制?

时间:2011-11-02 16:38:32

标签: .net winforms draw paint delphi-prism

当我点击鼠标左键并拖动时,我想要绘制虚线框的winform。释放鼠标左键时,框架应消失。我可以用ControlPaint.DrawReversibleFrame方法做到这一点。但是,每次不在winform中,它都会在winform之外进行。似乎使用屏幕作为绘画区域而不是winform的控制绘画方法。我是对的吗?

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

谢谢,

1 个答案:

答案 0 :(得分: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);
}