Почему методы рисования controlpaint рисуют вне своей области рисования клиента? - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть winform, на котором я хочу нарисовать пунктирную рамку, когда вы щелкаете левой кнопкой мыши и перетаскиваете. Когда левая кнопка мыши отпущена, рамка должна исчезнуть. Я могу сделать это с помощью метода ControlPaint.DrawReversibleFrame. Тем не менее, он обращается за пределами формы win каждый раз, когда не в пределах формы win. Похоже, методы controlpaint с использованием экрана в качестве области рисования, а не winform. Я прав?

Если мое предположение верно, как вы говорите controlpaint использовать winform в качестве области рисования.

Спасибо

1 Ответ

1 голос
/ 02 ноября 2011

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);
}
...