Элемент управления WinForms для редактирования карты изображения

В приложении WinForms мне нужно иметь возможность интерактивно редактировать "горячие" области поверх изображения, чтобы позже использовать их как своего рода карту изображения.

Я попытался смонтировать UserControl с несколькими плавающими прямоугольниками (Microsoft.VisualBasic.PowerPacks ftw) поверх PictureBox, но результат был не таким уж красивым, особенно с мерцанием и проблемами обновления при перемещении элементов управления.

Кто-нибудь знает о существующем элементе управления, который помог бы с определением областей на холсте? Я думаю, что графические приложения, например, должны много иметь дело с плавающими выделениями, но я не смог отследить ничего полезного. Любые идеи приветствуются.


person Tiberiu Ana    schedule 24.06.2009    source источник


Ответы (2)


у меня такое управление... без дизайнерской поддержки

Есть одна маленькая ошибка (очень прерывистая), которую я еще не обработал, но она лежит где-то глубоко в BCL. Если вам нужна копия, напишите мне письмо (через www.sadeveloper.net), и я вышлю вам копию на двух условиях.

  1. стандартный иммунитет от любых последствий, отсутствие ответственности за любой ущерб, случайный или иной....
  2. если вы найдете ошибку и исправите ее, вы сообщите мне, как

Малио

person MaLio    schedule 24.06.2009

На данный момент придерживаюсь вашего текущего решения. Ваше мерцание может быть результатом того, что вы не включили двойную буферизацию!

При включенной двойной буферизации большая часть (если не все) вашего мерцания должна исчезнуть.

В вашем InitializeComponent как пользовательского элемента управления, так и формы:

this.SetStyle(ControlStyles.AllPaintingInWmPaint |
              ControlStyles.UserPaint |
              ControlStyles.DoubleBuffer,true);

Дополнительную информацию можно найти в этой статье.

person Ray Hayes    schedule 24.06.2009
comment
Не имея лучшего решения, я все равно застрял со своим решением, но спасибо за совет по двойной буферизации! - person Tiberiu Ana; 24.06.2009