Создание контроля над наложением в winforms - PullRequest
1 голос
/ 24 августа 2010

Я использую c # winforms, чтобы показать изображение. Отображение изображения осуществляется с помощью пользовательского элемента управления. Теперь я хочу предоставить пользователю возможность рисовать линии, помещать другие небольшие изображения, писать текст и т. Д. Поверх изображения на элементе управления наложением. Как я могу предоставить эту функциональность? Если я использую другой пользовательский элемент управления, чтобы показать оверлейный элемент управления с прозрачной задней панелью, это будет работать? Любое другое решение будет приветствоваться.

1 Ответ

3 голосов
/ 24 августа 2010

Вы можете попробовать подойти к этому с помощью холста ( Панель ), который обрабатывает рисование изображения в качестве фона, а затем всех аннотаций / разметки.Это сделает передний план прозрачным.Я ожидаю, что вы захотите установить Control.DoubleBuffer для производительности.

Вы можете поэкспериментировать с настройкой стиля ControlStyles .AllPaintingInWmPaint.Кроме того, попробуйте переопределить Control.OnPaintBackground и ничего не делать, а также переопределить Control.OnPaint и выполнить всю свою живопись внутри.

Если производительность по-прежнему неприемлема, платите близкообратите внимание на свойство PaintEventArgs.ClipRect.Это единственная область, которую нужно покрасить.Хитрость заключается в том, чтобы выяснить, какие из ваших аннотаций / наложений пересекаются с этим прямоугольником, и раскрасить их в правильном порядке.

Либо этот холст, либо элемент управления более высокого уровня должен будет отслеживать движение мыши, чтобы вы знали, где нарисоватьлинии, вставка изображений и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...