Как отобразить изображения друг на друге, используя C # (формы или WPF)? - PullRequest
0 голосов
/ 18 июля 2011

Мне нужно отобразить изображения друг на друге.Это может быть составное \ многослойное изображение или отдельные изображения.Обычно это будет увеличенное изображение с меньшими изображениями сверху.При комбинированном \ многоуровневом подходе каждое из меньших изображений должно быть отдельным (и доступным) слоем.При подходе к отдельным изображениям меньшие изображения находятся сверху с прозрачным фоном.При любом подходе меньшие изображения должны быть доступны, т.е. их можно перемещать (перетаскивать) или удалять.Приложению необходимо отображать эти изображения вместе (как если бы это было одно изображение) и отслеживать координаты (положение) меньших изображений.

Текущее (проверенное на практике) решение имеет элемент управления PictureBox, который отображает большое изображение и древовидную структуру.Узлы перетаскиваются из древовидной структуры в графическое окно и визуализируются с использованием графических методов DrawString или DrawImage - они рисуют меньшие изображенияПроблема в том, что, когда нарисовано меньшее изображение, я не могу вернуться к нему как к отдельному графическому объекту.Окно рисунка «видит» его как часть текущего изображения.

Мне нужно сделать это в C # (WinForms или WPF).И тип изображения должен быть общим и открытым форматом, то есть не проприетарным.Предпочтительно нет сторонних контролей.

Есть предложения \ рекомендации?

Ответы [ 3 ]

0 голосов
/ 18 июля 2011

WPF будет технологией, которую я выберу для этого проекта.

  • Drag & Drop way лучше, без мерцания, лучшая концепция
  • Рендеринг непосредственно наHW, более плавный способ манипулирования изображениями

Общая идея реализации:

  • Шаблон MVVM
  • ViewModel, содержащая информацию о вашем слое
  • ItemsControl, связанный с коллекцией Small overlay Images, содержащей DataTemplate, который визуализирует изображения через пользовательский UserControl на основе большого пальца (для функции перетаскивания и перетаскивания), отображает маленькие изображения сверху.

Легко добавить функциональность, чтобы перетаскивать, редактировать, скрывать каждое маленькое изображение отдельно.

0 голосов
/ 19 июля 2011

Может быть создать графическое окно для каждого изображения.Прозрачный фон даст эффект одиночного изображения.

0 голосов
/ 18 июля 2011

Проблема в том, что, когда нарисовано меньшее изображение, я не могу вернуться к нему как к отдельному графическому объекту.Окно изображения «видит» его как часть текущего изображения.

Такое поведение совершенно нормально.Рисование GDI не работает с объектами.Чтобы сделать то, что вы просите, вам нужно отследить любое событие, которое может вызвать изменение в конечном изображении, и когда такое событие произойдет, вам нужно нарисовать все изображение с самого начала, включая первое изображение (назначение фонового изображенияЯ думаю).

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