Вопрос № 59820: Здравствуйте.
возник вопрос:
пишу на BCB 6.0
на канву формы с помощью Canvas->Draw выкладываю Битмап.
хочу поверх него вывести текст с помощью Canvas->TextOutA.
все прекрасно работает, но фон у текста серый (по умолчанию). ...Вопрос № 59837: Здравствуйте! Помогите плиз разобраться с координатами GDI.
Нужно распечатать вывод, рисуемый моей программой.
Сейчас оно работает, но вывод печатается совсем маленький, раза в 5 меньше чем надо. Когда-то давно я разбирался со всеми этими кли...
Вопрос № 59.820
Здравствуйте.
возник вопрос:
пишу на BCB 6.0
на канву формы с помощью Canvas->Draw выкладываю Битмап.
хочу поверх него вывести текст с помощью Canvas->TextOutA.
все прекрасно работает, но фон у текста серый (по умолчанию).
как мне поставить свой фон под текстом, либо сделать фон прозрачным?
зарание спасибо
Отправлен: 22.10.2006, 21:23
Вопрос задал: PROD (статус: 5-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergey A. Wedensky
Здравствуйте, PROD!
SetBkMode(Canvas->Handle, TRANSPARENT);
либо убрать ETO_OPAQUE из флагов TextFlags:
Canvas->TextFlags &= ~ETO_OPAQUE;
Удачи!
Ответ отправил: Sergey A. Wedensky (статус: 6-ой класс)
Ответ отправлен: 23.10.2006, 10:16 Оценка за ответ: 5
Вопрос № 59.837
Здравствуйте! Помогите плиз разобраться с координатами GDI.
Нужно распечатать вывод, рисуемый моей программой.
Сейчас оно работает, но вывод печатается совсем маленький, раза в 5 меньше чем надо. Когда-то давно я разбирался со всеми этими клиенстскими логическими, экранными координатами но все благополучно забыл :-)
В принципе смогу разобраться сам, но решил проверить, что быстрее - получить помощь уважаемых экспертов или втыкать самому.
Ниже куски кода приложения, постарался привести только необходимое и достаточное. Нужно, передать такой rcPosition, чтобы AFCYearObj::Draw отрисовало все так, чтобы картинка занимала весь лист бумаги.
Сорри если излагожил непонятно. Заранее спасибо!
Приложение:
Отправлен: 23.10.2006, 01:46
Вопрос задал: Eustin (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergey A. Wedensky
Здравствуйте, Eustin!
GetClientRect() возвращает размер окна в точках. Вам же нужно вывести на бумагу изображение соответствующего размера, учитывая разрешение принтера, выбранный формат бумаги и пр.
Для получения размера DC принтера в точках можно воспользоваться
int Width = dcPrint.GetDeviceCaps(HORZ_RES);
int Height = dcPrint.GetDeviceCaps(VERT_RES);
Для более точной подгонки хорошо бы еще учесть физические поля принтера:
GetDeviceCaps(PHYSICAL_OFFSET_X);
GetDeviceCaps(PHYSICAL_OFFSET_Y);
Правда нужно будет перевести в пикселы, например узнав разрешение принтера
GetDeviceCaps(LOGPIXELS_X);
GetDeviceCaps(LOGPIXELS_Y);
Удачи!
Ответ отправил: Sergey A. Wedensky (статус: 6-ой класс)
Ответ отправлен: 23.10.2006, 10:13 Оценка за ответ: 5 Комментарий оценки: Спасибо!