Автоматическое масштабирование изображения в .NET - PullRequest
4 голосов
/ 17 июля 2009

Я рассматриваю проект личного обучения. Используя .NET (предпочтительно VB), я хочу создать простое настольное приложение, единственной функцией которого является отображение комиксов, таких как CDisplay, но с более продвинутой навигацией. Я хочу, чтобы можно было увеличивать изображение, щелкая определенные области изображения, например отдельные панели, и чтобы область масштабирования автоматически привязывалась к панели и увеличивала ее. Изображения обычно имеют стандартный формат, например .jpeg, .png и т. Д.

Примерно так я и собираюсь: http://iphonecomicbookreader.com/

Я даже не уверен, как это называется? Отображение изображения? Возможно, тональное отображение? Возможно ли сделать это в .NET или потребуется какая-то внешняя библиотека? Примеры кода были бы хорошими, но, очевидно, это довольно расплывчатый запрос. Просто быть направленным в правильном направлении было бы очень полезно.

Спасибо

1 Ответ

11 голосов
/ 17 июля 2009

Вы можете сделать это полностью в .Net. Вот отличный обзор предмета:

http://www.codeproject.com/KB/books/1861004990.aspx

Это C #, но на самом деле нетрудно перевести этот материал на VB. На обоих языках это просто вопрос создания объектов, настройки свойств и т. Д.

По сути, вы загружаете исходное изображение в растровый объект (используя встроенные методы). Когда вы хотите увеличить что-то, вы определяете объект Rectangle, который описывает область, к которой хотите увеличить, а затем используете метод DrawImage вашего объекта Graphics, чтобы скопировать и изменить размер этой области в новое растровое изображение, которое затем отображается, однако вы лайк. В примере кода показано, как использовать все эти методы.

Единственной относительно сложной частью этого было бы автоматическое определение границ каждой панели. Это может быть особенно трудно, если некоторые из панелей имеют неправильную форму (например, Family Circus, как будто кто-то читает это), или если отсканированное изображение комикса не выровнено идеально. Возможно, было бы лучше включить комиксы в ваше приложение, которые содержат исходное изображение, а также предварительно заданные вами области, описывающие границы панелей.

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

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

Обновление 2 : вот исходный код .

Обновление 3 : и вот оригинальный комикс в контексте. Считай это моим данью Джеффу Этвуду. :)

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