Информация об изменениях

Сообщение Re[5]: Масштабирование битмапа : GDI+ от 14.01.2017 9:51

Изменено 14.01.2017 9:52 MTimur

Re[5]: Масштабирование битмапа : GDI+
Здравствуйте, Carc, Вы писали:

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



MT>>[/cut]

MT>>Посмотреть бы результат (исходная картинка, scale, результирующая)
MT>>ScaleTransform создает матрицу преобразования для всей сцены. Вероятно, масштабирование происходит вокруг центра битмапа, соответственно левый верхний угол смещается. Если так, то нужно юзать TranslateTransform.
C>Тут бинарник http://www.amlpages.com/Source/richedit_test.zip

C>При старте сразу вставляет битмапку в CRichEditView, и стартует диалог ресайза. Там можно поиграться. Изменяем ширину, софтина перерассчитывает длину и пытается создать новый битмап на основе старого отмасштабированного по новой длине и ширине. Ну и изменяет высоту, тогда все наоборот — вычисляет ширину на основе новой высоты и.т.д…


Так это элементарный случай, можно проще:
   g.DrawImage(&im, rcDest);

Без всяких матриц преобразований.
Re[5]: Масштабирование битмапа : GDI+
Здравствуйте, Carc, Вы писали:

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



MT>>[/cut]

MT>>Посмотреть бы результат (исходная картинка, scale, результирующая)
MT>>ScaleTransform создает матрицу преобразования для всей сцены. Вероятно, масштабирование происходит вокруг центра битмапа, соответственно левый верхний угол смещается. Если так, то нужно юзать TranslateTransform.
C>Тут бинарник http://www.amlpages.com/Source/richedit_test.zip

C>При старте сразу вставляет битмапку в CRichEditView, и стартует диалог ресайза. Там можно поиграться. Изменяем ширину, софтина перерассчитывает длину и пытается создать новый битмап на основе старого отмасштабированного по новой длине и ширине. Ну и изменяет высоту, тогда все наоборот — вычисляет ширину на основе новой высоты и.т.д…


Так это элементарный случай, можно проще:
   g.DrawImage(&im, rcDest);

Без всяких матриц преобразований.

как то так