Re[13]: Масштабирование битмапа : GDI+
От: MTimur  
Дата: 16.01.17 16:25
Оценка:
Здравствуйте, Carc, Вы писали:

  Скрытый текст
C>Здравствуйте, MTimur, Вы писали:

MT>>Здравствуйте, Carc, Вы писали:


C>>>Дык вроде там CopyImage юзался для копирования исходного битмапа, который потом отрисовывается GDI+ со всякими вывертами (я пытался через ScaleTransfofm, в твоем коде уже просто DrawImage с заданной шириной\высотой).


MT>>Допустим исходный битмап имеет размер 100*100.

MT>>1. Из увеличенного битмапа размером 200*200 точек копируем область размером 100*100. Что получится?
MT>>2. Из уменьшенного битмапа размером 50*50 точек копируем область размером 100*100. Результат?
C>Ну ты не уловил… У меня там как было примерно…

C>1) Копирую исходный битмап ДО рисования. (сейчас я это убрал — ибо лишнее)

C>2) Создаю битмап в памяти, чтобы отрисоваться на нем. И выбираю его в Graphics в конструкторе.
C>3) Рисую исходный со новой шириной\высотой (как ты подсказал), или (как не работало) со ScaleTransform…

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


здесь
Автор: MTimur
Дата: 16.01.17
исправился, описал поведение кода, которое было в тех исходниках, которые ты выкладывал.
Фактически для ресайза изображения в данном случае, можно было сразу отдать исходную картинку в CopyImage, указав желаемые размеры нового битмапа.
Re[14]: Масштабирование битмапа : GDI+
От: Carc Россия https://vk.com/gosha_mazov
Дата: 16.01.17 16:56
Оценка:
Здравствуйте, MTimur, Вы писали:



MT>здесь
Автор: MTimur
Дата: 16.01.17
исправился, описал поведение кода, которое было в тех исходниках, которые ты выкладывал.

MT>Фактически для ресайза изображения в данном случае, можно было сразу отдать исходную картинку в CopyImage, указав желаемые размеры нового битмапа.
А разве если я пихну в CopyImage исходный битмап и скажу CopyImage новую (бОльшую) ширину\высоту, то CopyImage растянет ее? Мне казалось, она просто скопирует исходную длину\ширину в результирующий битмап, а остатки (бОльшей) длины\ширины просто останутся черными (ну или чем там зальет HDC в памяти по умолчанию).

Не-е? Разве не так?
Aml Pages Home
Re[15]: Масштабирование битмапа : GDI+
От: MTimur  
Дата: 16.01.17 17:05
Оценка:
Здравствуйте, Carc, Вы писали:

C>А разве если я пихну в CopyImage исходный битмап и скажу CopyImage новую (бОльшую) ширину\высоту, то CopyImage растянет ее? Мне казалось, она просто скопирует исходную длину\ширину в результирующий битмап, а остатки (бОльшей) длины\ширины просто останутся черными (ну или чем там зальет HDC в памяти по умолчанию).

C>Не-е? Разве не так?

If necessary, the function stretches the bits to fit the desired size of the new image.

Re: Масштабирование битмапа : GDI+
От: uuuser  
Дата: 17.01.17 00:45
Оценка:
Здравствуйте, Carc, Вы писали:

C>Нужно отмасштабировать битмапку в памяти с заданными зумом. Вчера половину дня промаялся: пищит, мигает, известно куда не попадает.

C>Все масштабирует, зум на лицо, но обрезает по размеру исходого битмапа. Полный: *опа-кеды.
C>Уважаемый All, ткните носом, ЧЯДНТ!

лень вникать в код, просто направлю в нужном направлении

Gdiplus::Graphics gfx( pDst );
gfx.SetInterpolationMode( Gdiplus::InterpolationModeBilinear );
Gdiplus::RectF rc( 0.0f, 0.0f, dw, dh ); //destination rectangle
gfx.DrawImage( pSrc, rc, sx, sy, sw, sh, Gdiplus::UnitPixel, NULL, NULL, NULL ); //sx, sy, sw, sh - source pos/size
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.