Рисование CPen в окне и в метафайле с настройкой различной толщины линий в режиме по умолчанию MM_TEXT не вызывает вопросов. После установки режима MM_ANISOTROPIC, настройки координат и масштаба, рисование при толщине линий больше нуля происходит масштабирование линии (значительное утолщение), а если установить в ноль то в окне линия видна но метафайл печатается уже без неё.
Пробывал различные варианты настройки конструктора CPen — результат тот же.
Спасибо за советы.
Здравствуйте, RDim, Вы писали:
RD>Рисование CPen в окне и в метафайле с настройкой различной толщины линий в режиме по умолчанию MM_TEXT не вызывает вопросов. После установки режима MM_ANISOTROPIC, настройки координат и масштаба, рисование при толщине линий больше нуля происходит масштабирование линии (значительное утолщение), а если установить в ноль то в окне линия видна но метафайл печатается уже без неё. RD>Пробывал различные варианты настройки конструктора CPen — результат тот же. RD>Спасибо за советы.
Показывай код настройки режима DC и масштабирования.
Здравствуйте, rus blood, Вы писали:
RB>Зачем вообще делаешь масштабирование?
Мне так удобно отображать график из массива, по вертикали имеем 200 ед. по горизонтали 14 ед. Данные получаю от прибора по комку а далее после обработки в моей програмке в документы буду отправлять (EXCEL например).
Здравствуйте, RDim, Вы писали:
RD>Рисование CPen в окне и в метафайле с настройкой различной толщины линий в режиме по умолчанию MM_TEXT не вызывает вопросов. После установки режима MM_ANISOTROPIC, настройки координат и масштаба, рисование при толщине линий больше нуля происходит масштабирование линии (значительное утолщение), а если установить в ноль то в окне линия видна но метафайл печатается уже без неё.
Дело в том, что нуливая толщина линии означает то, что линия всегда будет рисоваться толшиной в один __Физический__ пиксел т.е. не зависит от масштаба. Может по этой причине ее и не видно (а может драйвер выкидывает) при печати.
Здравствуйте, kmn, Вы писали:
kmn>Дело в том, что нуливая толщина линии означает то, что линия всегда будет рисоваться толшиной в один __Физический__ пиксел т.е. не зависит от масштаба. Может по этой причине ее и не видно (а может драйвер выкидывает) при печати.
Я согласен что линия всегда будет рисоваться толшиной в один __Физический__ пиксел, но мне не понятно, есть ли возможность настроить CPen чтобы в метафайле он был нужной толщины или придется обходить масштабирование, а это не совсем удобно.
Кроме CPen чем еще можно рисовать линии?
Здравствуйте, RDim, Вы писали:
RD>Здравствуйте, kmn, Вы писали:
kmn>>Дело в том, что нуливая толщина линии означает то, что линия всегда будет рисоваться толшиной в один __Физический__ пиксел т.е. не зависит от масштаба. Может по этой причине ее и не видно (а может драйвер выкидывает) при печати.
RD>Я согласен что линия всегда будет рисоваться толшиной в один __Физический__ пиксел, но мне не понятно, есть ли возможность настроить CPen чтобы в метафайле он был нужной толщины или придется обходить масштабирование, а это не совсем удобно. RD>Кроме CPen чем еще можно рисовать линии?
Если Вам надо чтобы в метафайле линия была толщиной в 10 пикселей, то надо так:
CSize size(10, 10); pDC->DPtoLP(&size);
size.cx и size.cy — толщин линии
Здравствуйте, RDim, Вы писали:
RD>Здравствуйте, kmn, Вы писали:
kmn>>Дело в том, что нуливая толщина линии означает то, что линия всегда будет рисоваться толшиной в один __Физический__ пиксел т.е. не зависит от масштаба. Может по этой причине ее и не видно (а может драйвер выкидывает) при печати.
RD>Я согласен что линия всегда будет рисоваться толшиной в один __Физический__ пиксел, но мне не понятно, есть ли возможность настроить CPen чтобы в метафайле он был нужной толщины или придется обходить масштабирование, а это не совсем удобно. RD>Кроме CPen чем еще можно рисовать линии?
Насколько я понимаю, масштабирование в DC происходит непосредственно при выводе на девайс, и происходит это растровым способом. Т.е. ты что-то нарисовал pen-ом на логической поверхности, а потом это растровым способом масштабируется на экран (принтер).
Здравствуйте, rus blood, Вы писали:
RB>Насколько я понимаю, масштабирование в DC происходит непосредственно при выводе на девайс, и происходит это растровым способом. Т.е. ты что-то нарисовал pen-ом на логической поверхности, а потом это растровым способом масштабируется на экран (принтер).
Масштабируются области относительно друг друга для удобства восприятия информации и, само сабой, конечный результат — это растровое изображение, потому что физические свойства устройств визуализации иначе не могут. Но результат обработки сохраняется либо массивом (который не очень то удобно воспринимать), либо в векторе (wmf), а вектор это вектор.
Вы писали: ты что-то нарисовал pen-ом на логической поверхности, а потом это растровым способом масштабируется...
Наоборот, сначала масштабирование, а затем уже и рисование. Как там уж, я не знаю, усроен процесс pen-а, но получается так, чем больше разница масштаба областей, тем больше пятно pen-а. До масштабирования pen=1 и рисует в 1 пик., а после масштабирования при разнице, например, в десять и pen рисует в 10 пик при pen=1.