Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 30.05.2019, 08:24   #1
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 352
Репутация: -137
По умолчанию Вертикальный TextOut

Код:

HFONT CreateEasyFont  (HDC DeviceContext,const std::wstring &FontName,                                                                                                                                                                                                                                  double Size, bool Vertical)
{
 /// Size задаётся в текущих единицах контекса
 /// Освобождать шрифт функцией DeleteObject
 HFONT   Result=NULL;
 LOGFONT AboutFont;
 if (DeviceContext!=NULL)
 {
  AboutFont.lfHeight        =((int)(-abs(Size)));
  AboutFont.lfWidth         =0;
  AboutFont.lfOrientation=0;
  AboutFont.lfEscapement    =0;
  AboutFont.lfEscapement    =0;
  AboutFont.lfWeight        =0;
  AboutFont.lfItalic        =0;
  AboutFont.lfUnderline     =0;
  AboutFont.lfStrikeOut     =0;
  AboutFont.lfCharSet       =0;
  AboutFont.lfOutPrecision  =0;
  AboutFont.lfClipPrecision =0;
  AboutFont.lfQuality       =0;
  AboutFont.lfPitchAndFamily=0;
  if (Vertical)
  {
   AboutFont.lfEscapement=-900;
  }
  else
  {
   AboutFont.lfEscapement=0;
  }
  wcscpy(AboutFont.lfFaceName, FontName.c_str());
  Result=CreateFontIndirect(&AboutFont);
 }
 return Result;
}

Эта функция вызвана дважды c Vertical, равным false и с Vertical, равным true, потом TextOut вывел текст обоими созданными шрифтами:
Код:

TextOut(DeviceContext, 200, 200, L"Горизонтальный", 14);

и
Код:

TextOut(DeviceContext, 400, 200, L"Вертикальный", 12);

. Size в обоих случаях одинаковый, в тексте было 20.0 в режиме MM_TEXT, реально будет 700.0 в режиме MM_HIMETRIC. От точек: x=200, y=200; x=200, y=220; x=400, y=200; x=380, y=200 проведены линии. По тесту видно, что в горизонтальном тексте засечка вертикальной «палки» буквы р легла на линию с ординатой 220, но у вертикального текста на линии с абссысой 380 оказался низ букв, не имеющих выступов вниз, а палка буквы р оказалась пересечена этой линией. Как вычислить требуемое смещение, чтоб и у вертикального текста на линию с отступом на высоту текста лёг низ выступающих частей букв?
Миниатюры
Нажмите на изображение для увеличения
Название: 2019-05-30_11-20-28.jpg
Просмотров: 2
Размер:	73.1 Кб
ID:	96798  

Последний раз редактировалось taras-proger77; 30.05.2019 в 08:42.
taras-proger77 вне форума   Ответить с цитированием
Старый 01.06.2019, 15:57   #2
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Адрес: Московская Область, скверное место, не рекомендовал бы тут жить.
Сообщений: 359
Репутация: 248
По умолчанию

А не проще ли использовать Coordinate Spaces and Transformations?
ResourceSpace вне форума   Ответить с цитированием
Старый 01.06.2019, 18:41   #3
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 352
Репутация: -137
По умолчанию

А что это?
taras-proger77 вне форума   Ответить с цитированием
Старый 03.06.2019, 15:15   #4
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,825
Репутация: 1843
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
А что это?
Это ссылка.
По ней можно пройти и прочитать что это и с чем это едят.
waleri вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вертикальный слайдер или ..? Jonny316 PHP 3 22.10.2014 12:56
удаление TextOut ? Tenebor Компоненты Delphi 5 04.05.2011 22:00
Вертикальный текст. tema654 Паскаль 1 31.03.2011 10:30
TextOut и шрифт Lemon2009 Общие вопросы Delphi 10 01.09.2010 12:41
TextOut xzDelphi Помощь студентам 9 23.10.2007 12:29


23:30.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru