![]() |
|
|
![]()
|
|
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Допустим есть линия, которая рисуется поверх изображения, надо при сохранении изображения эту линию проецировать.
Ну это понятно как сделать, надо сначала отрисовать как обычно, а потом просто скопировать в битмап и его уже сохранять. Но требуется сделать изменяемую толщину линии(чтобы толщина зависела от размера изображения, т.к. на большом изображении она просто очень тонкая и теряется), понятно что можно менять толщину при создании CPen::CreatePen но там толщина изменяется дискретно, оптимальное ли это решение? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
Линии же все равно страшными и несглаженными будут. К чему тут точность?
|
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
непонятно при создании CPen::CreatePen, nWidth задаётся в каких единицах? device units это пиксели? и зависит от mapping mode или от чего?
допустим если я хочу чтобы моя линия была различных размеров в зависимости от размера изображения, например 0.1% от max(w,h) или например чтобы при выводе изображения в каком то размере, например масштаб изображения 60%(чтобы поместилось в экран) и я хочу чтобы моя линия показывалась 1 мм толщиной. Как это можно сделать? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
Завязываться на DPI. Хоть через тот же SetMapMode. Но реальные единицы измерения (сантиметры, дюймы) на экране монитора большого смысла не имеют, так как DPI там логический.
|
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
я не понимаю как это сделать через mapping mode
мне надо изменить только толщину линии ,а сам размер линии мне менять не надо. нашел код который делает что то похожее, можете его прокомментировать?
|
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
вот тут еще
http://stackoverflow.com/questions/1918332...tive-text-width хоть и про делфи, но всё равно
я про это изначально говорил, только я всё таки не понимаю как работает mapping mode или при изменении масштаба через mapping mode мы должны так же делить на scale и саму длину линии и так увеличиться только толщина? |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
я всё таки не понял mapping mode позволяет менять толщину отрезка или нет? или можно менять только масштаб таким образом?
т.е. размер отрезка должен оставаться тем же самым, а должна измениться только толщина в зависимости от параметров. + еще не очень понятно в каких единицах задаётся толщина в функции CPen::CreatePen в логических единицах? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
По-умолчанию, если никакой SetMapMode не вызывался, не установлено никаких матриц транформации, толщина в CreatePen задается в пикселях. Позиции концов отрезка задавай в координатах пикселей изображения, а толщину задавай, например, в поинтах (1/72 дюйма) и переводи эти в поинты в пиксели на основе DPI. Откуда брать этот DPI - решай уже сам, исходя из личных потребностей.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |