Лупа в C# .net

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

2 ответа

Вот как вы делаете это в WPF

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

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

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

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

Как я уже сказал, я уверен, что это лучший способ сделать это, так как я просто что-то стучал в последнюю минуту.

Другие вопросы по тегам