C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
IMAGE AND TXT
Guest
  Отправлено: 03.05.2005, 19:56


Не зарегистрирован







Как в IMAGE вывести текст с наперед заданным размером шрифта, стилям и видом т.е жирный, подчеркнутый, курсивный.

Sl@Sh
Отправлено: 04.05.2005, 08:16


Мастер участка

Группа: Участник
Сообщений: 383



FontDialog1 — TFontDialog;
Image1 — TImage;

CODE

Image1->Canvas->Font = FontDialog1->Font;
Image1->Canvas->TextOut(0, 0, "Text");


Отредактировано Sl@Sh — 04/05/2005, 08:17
Guest
Отправлено: 05.05.2005, 12:12


Не зарегистрирован







А можно ли вывести текст под определенным углом?
Vlad
Отправлено: 05.05.2005, 13:12


Машинист паровоза

Группа: Участник
Сообщений: 231



Можно, хоть к вверх тормашками . Пример из хелпа:
RECT rc;
int angle;
HFONT hfnt, hfntPrev;
LPSTR lpszRotate = "String to be rotated.";
/* Allocate memory for a LOGFONT structure. */
PLOGFONT plf = (PLOGFONT) LocalAlloc(LPTR, sizeof(LOGFONT));
/* Specify a font typeface name and weight. */
lstrcpy(plf->lfFaceName, "Arial");
plf->lfWeight = FW_NORMAL;
/* Retrieve the client-rectangle dimensions. */
GetClientRect(hwnd, &rc);
/*
* Set the background mode to transparent for the
* text-output operation.
*/
SetBkMode(hdc, TRANSPARENT);
/*
* Draw the string 36 times, rotating 10 degrees
* counter-clockwise each time.
*/
for (angle = 0; angle < 3600; angle += 100) {
plf->lfEscapement = angle;
hfnt = CreateFontIndirect(plf);
hfntPrev = SelectObject(hdc, hfnt);
TextOut(hdc, rc.right / 2, rc.bottom / 2,
lpszRotate, lstrlen(lpszRotate));
SelectObject(hdc, hfntPrev);
DeleteObject(hfnt);
}
/* Reset the background mode to its default. */
SetBkMode(hdc, OPAQUE);

Если есть хендл(hwnd) то крути как хочешь
Guest
Отправлено: 05.05.2005, 22:30


Не зарегистрирован







Почему при выводе в IMAGE текста при помощи следующего кода
CODE

Image1->Canvas->Font = FontDialog1->Font;
Image1->Canvas->TextOut(0, 0, "Text");

Он не находится в тех координатах х и у которые передаются в функцию TextOut(), а находится ниже и левее нужных координат в зависимости от размера шрифт это расстояние разное.
Vlad
Отправлено: 06.05.2005, 08:35


Машинист паровоза

Группа: Участник
Сообщений: 231



Система тебе выводит все правильно. Строка текста занимает определенный RECT rc; GetClientRect(hwnd, &rc);
то есть прамоугольник, высота и длина которого определяется размерами шрифта, длинной строки..Соответсвенно что бы правильно спозиционировать выводимый текс необходимо это учитывать.

Вернуться в Вопросы программирования в C++Builder