Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

текст в ддроу


Green_Templar ©   (2005-06-26 00:58:00) 

Как выбрать шрифт, которым пишешь на канве у ддроу?


NikeOLD   (2005-06-27 10:50:00) [1]


> Green_Templar ©   (27.06.05 00:33) [4]

Шрифты с постоянной шириной называются МОНОШИРИННЫМИ.
Arial и Times к таким шрифтам не относятся. Стандартный моноширинный шрифт в Винде - Courier


Sphinx   (2005-06-27 06:43:00) [2]

>есть ли шрифты, где можно делать жёлыте буквы с чёрным контуром?
Фотошоп и лубой шрифт :)


Grell   (2005-06-27 02:26:00) [3]


>  Неужели спрайтовый шрифт быстрее обычного?

Вообще все методы GDI медленны для DirectDraw, а спрайтовый шрифт - это просто блиттинг отдельных символов на поверхность, поэтому он и быстрее!


Green_Templar   (2005-06-27 00:33:00) [4]

Получил исчерпывающие ответы, спасибо :) Неужели спрайтовый шрифт быстрее обычного?
Я пишу пока на дэлфиХ (на ней быстрее), но потом переведу или на чистый ДХ, или на его компонент.
Как называются шрифты с постоянной шириной символов, является ли Ариал таким шрифтом, и есть ли шрифты, где можно делать жёлыте буквы с чёрным контуром?


злобная танька   (2005-06-26 08:44:00) [5]

нету у него канвы..
:(


cyborg   (2005-06-26 08:44:00) [6]



Var
 Surface : IDirectDrawSurface7;
 LF: TLogFont;
 Font : HFont;
 DC : HDC;

...

 FillChar(LF, SizeOf(LF), 0);
 with LF do
   begin
     lfHeight := 14; //размер шрифта
     lfWeight := fw_Normal; //fw_Normal - нормальный, FW_BOLD - жирный
     lfUnderline:=1; //Подчёркнутый
     lfItalic:=1; //Наклонный

     lfCharSet:= RUSSIAN_CHARSET;

     lfFaceName:='Arial'; //Название шрифта
   end;
 Font := CreateFontIndirect(@LF);

 //Захват контекста поверхности (требуется для Windows API функции вывода текста)
 if Surface.GetDC(DC)=0 then //Если удалось получить контекст поверхности
 begin
   SelectObject(DC,Font);

   SetTextColor(DC,TextColor); //Установить цвет выводимого текста
   SetBkMode(DC, TRANSPARENT); //Установить прозрачный фон выводимого текста

   TextOut(DC, 0, 0, PChar(Text), Length(Text)); //Тут выводишь текст

   //Освобождение контекста поверхности (обязательно после захвата контекста!)
   Surface.ReleaseDC(DC);
 end; //if Surface.GetDC(DC)=0

  DeleteObject(Font); // Удаляем ненужный шрифт.



Самое главное не забывай освобождать ресурсы!
Surface.ReleaseDC
DeleteObject(Font);

К тому же этот вариант очень медленный. Делай свой спрайтовый шрифт.


Кефир87   (2005-06-26 01:07:00) [7]

Прям ДиректХ или ДелфиХ?
А то в делфиХ савсем просто:
DXDraw.Surface.Canvas.Font.Name = 'Courier';
а ДирекХ я не знаю 8(


Наверх

Титульная страница Поиск, карта сайта Написать письмо