| 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); то есть прамоугольник, высота и длина которого определяется размерами шрифта, длинной строки..Соответсвенно что бы правильно спозиционировать выводимый текс необходимо это учитывать.
 
 | 
|  |