![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| rubenhak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 17.9.2003 Где: Yerevan Репутация: нет Всего: нет |
Люди кто поможет написать прогу которая изменит размеры картинки.
Точнее - у меня есть Bitmap [NxN] нужно уменьшить на K%-ов . Реализация может быть на Delphi , Java , .NET все равно. Я немножко покопался и узнал что есть пары алгоритмов bilinear interpolation, Catmull-Rom BSpline interpolation и.т.д но который выбрать и что он из себя представляет не имею понятия. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
A почему не подходит метод Graphics::DrawImage из GDI+ (FCL)?
|
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Полностью согласен с уважаемым Guest.
Воспользуйся DrawImage() - у него более 30 перегруженных вариантов, но тебе в принципе нужен такой: DrawImage(Image picture, Rectangle dest, Rectangle source, GraphicsUnit myUnit), где picture - твоя картинка, dest - прямоугольник, КУДА выводится картинка, source - прямоугольник, ОТКУДА выводится картинка (т.е. прямоугольник из твоей картинки - обычно пригождается, когда надо увеличить некоторый кусок картинки..). Теперь смотри. Действует правило - если прямоугольник, КУДА выводим, не совпадает с прямоугольником, ОТКУДА выводим, картинка АВТОМАТИЧЕСКИ изменяется (увеличивается/уменьшается), чтобы точно вписаться в dest. Т.е. что бы увеличить картинку, нам надо увеличить dest, чтобы уменьшить - уменьшить его же. Причем, как ты понимаешь, насколько увеличишь dest - настолько и картинку. Короче, я тебе набросал простенький пример. Возьми небольшую картинку где-то 100х100 пикселей. Если кликнешь на форме левой кнопкой - изображение увеличится, правой - уменьшится. Тока извиняй, я для понятности не стал позиционировать картинку по центру при каждом изменении размеров - но эт мелочи.. Итак, вот код (готов к компиляции):
-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
... а если необходимо изменить размер картинки (пропорционально уменьшить) и хранить опять его в Image ???
|
|||
|
||||
| Balu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.8.2002 Репутация: нет Всего: 1 |
Вот из моего проекта:
Это сообщение отредактировал(а) Balu - 11.5.2006, 10:55 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Создай новый Bitmap (с пом. new Bitmap (width, height, format)), сделай для него Graphics (Graphics.FromImage) и всё что ты будешь рисовать в этот Graphics, автоматически попадёт на битмап. Таким образом, можно взять исходный битмап NxN, создать новый битмап MxM и графикс для него, вывести первый битмап в графикс с пом. DrawImage, вот и всё. -------------------- ![]() |
|||
|
||||
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
ндя ... спасибо .. не подумал немного
|
|||
|
||||
| useless |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 18.5.2004 Репутация: нет Всего: 1 |
Люди, вы паритесь.
Используйте метод GetThumbnailImage из класса Image. Класс Bitmap - производный от Image. --------------------
Лучше день потерять, потом за 5 минут долететь !!! |
|||
|
||||
| Timus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.5.2006 Репутация: нет Всего: нет |
Всё конечно хорошо. Но
Откуда Copy ( ... ); ? |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |