Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Текст наискосок под углом / 5 сообщений из 5, страница 1 из 1
22.05.2003, 10:35
    #32165798
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текст наискосок под углом
Пжлста подскажите как текст наискосок выдать (не рисунок bmp, jpg с косым текстом, а текст, чтобы менять можно было в run-time на любой другой). Какие Win API или внутренностей Delphi достаточно будет?
...
Рейтинг: 0 / 0
22.05.2003, 10:44
    #32165815
_designer_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текст наискосок под углом
Открываешь
C:\Program Files\Common Files\Borland Shared\MSHelp\WIN32SDK.HLP
Закладка Index
Набираешь CreateFontIndirect

... и волосы становятся мягкими и шелковистыми...
...
Рейтинг: 0 / 0
22.05.2003, 10:53
    #32165836
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текст наискосок под углом
Спасибо за ответ. Но.
Но не сами буквы косые нужны, а текст чтобы написать поперек
формы на TForm. Хотя бы вертикально - есть что-то готовое в Delphi?
...
Рейтинг: 0 / 0
22.05.2003, 11:00
    #32165848
_designer_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текст наискосок под углом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
function CreateAngledFont(oFont : TFont; Angle : integer): HFont;
// передаю другой oFont, чтобы с параметрами не гемороиться
// а просто списать с уже существующего
var
  LogFont : TLogFont;
begin
  with LogFont do
  try
    lfHeight := oFont.Height;
    lfWidth :=  0 ; { have font mapper choose }
    lfEscapement := Angle; { only straight fonts }
    lfOrientation := Angle; { no rotation }
    if fsBold in oFont.Style then
      lfWeight := FW_BOLD
    else
      lfWeight := FW_NORMAL;
    lfItalic := Byte(fsItalic in oFont.Style);
    lfUnderline := Byte(fsUnderline in oFont.Style);
    lfStrikeOut := Byte(fsStrikeOut in oFont.Style);
    lfCharSet := Byte(oFont.Charset);
    if AnsiCompareText(oFont.Name, 'Default') =  0  then  // do not localize
      StrPCopy(lfFaceName, DefFontData.Name)
    else
      StrPCopy(lfFaceName, oFont.Name);
    lfQuality := DEFAULT_QUALITY;
    { Everything else as default }
    lfOutPrecision := OUT_DEFAULT_PRECIS;
    lfClipPrecision := CLIP_DEFAULT_PRECIS;
    case oFont.Pitch of
      fpVariable: lfPitchAndFamily := VARIABLE_PITCH;
      fpFixed: lfPitchAndFamily := FIXED_PITCH;
    else
      lfPitchAndFamily := DEFAULT_PITCH;
    end;
  finally
  end;
  Result := CreateFontIndirect(LogFont);
end;

Основной текст:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
var nFont, oFont : HFont;
...
Canvas.Font.Name := 'Times New Roman';
nFont := CreateAngledFont(Canvas.Font,  900 );
oFont := Canvas.Font.Handle
Canvas.Font.Handle := nFont;
...
Canvas.TextOut(ТудыX, СюдыY, 'Трям!');
...
Canvas.Font.Handle := oFont;
DeleteObject(nFont);

При чем здесь повернутые БУКВЫ я не понял...
...
Рейтинг: 0 / 0
22.05.2003, 12:12
    #32165961
Alexandr Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текст наискосок под углом
Excuse me! Сходу не усек, это же графика.
Спасибо.
Но достаточно одного параметра lfEscapement
...
lfEscapement := Angle; { only straight fonts }
lfOrientation := Angle; { no rotation }

...
lfEscapement := Angle; { only straight fonts }
lfOrientation := 0;
//Angle; { no rotation }
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Текст наискосок под углом / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]