Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Delphi (http://forum.oszone.net/showthread.php?t=30795)

Roman Go 19-10-2002 16:27 210195

Текст выводится с помощью метода TextOut, а вот как его вывести не с лева на право, а снизу-вверх не знаю, если кто знает подскажите, очень надо, вывожу его я на form1.canvas.

XXXX Pro 20-10-2002 13:35 210196

Обычными средствами Delphi (во всяком случае Delphi 3) это вроде бы нельзя. Но можно сделать так:
Создай шрифт с помощью API-функции CreateFont, указав в orientation 900 (угол поворота в десятых долях градусов), а затем затем присвой полученный handle шрифту в Canvas.
Получится примерно вот что:
YourFont:=CreateFont(......);
Form1.Canvas.Font.Handle:=YourFont;

Roman Go 21-10-2002 08:11 210197

Я сделал вот так, только вот одна проблема, при использовании моего шрифта сбросились все остальные настройки, например мой шрифт выводится подчеркнутым и в добавок ко всему еще и перечеркнутый.
Цитата:

procedure TForm1.Button1Click(Sender: TObject);
var shrift:tlogfont;
   fontmy:hfont;
begin
 shrift.lfEscapement:=900;
//  shrift.lfFaceName:='Arial';
 shrift.lfCharSet:=RUSSIAN_CHARSET;
 fontmy:=CreateFontIndirect(shrift);
 form1.canvas.font.handle:=fontmy;
 form1.canvas.TextOut(50,50,'проба текста');
 deleteObject(fontmy);
end;
Так вот не подскажете, как все настройки шрифта, кроме угла поворота сделать по умолчанию такими как у формы...

Roman Go 23-10-2002 14:54 210198

Я таки разобрался, если кому будет интересно:
Цитата:

var   LogRec: TLOGFONT;     // Информация о шрифте

// Читаем текущюю информацию о шрифте
GetObject(Form1.Canvas.Font.Handle,SizeOf(LogRec) ,Addr(LogRec) );
// Изменяем угол
LogRec.lfEscapement := 900;
// Устанавливаем новые параметры
form1.canvas.Font.Handle := CreateFontIndirect(LogRec);
...
{тут я вывожу свой текст под углом}
...
//а тут я возвращаю параметры по умолчанию
 LogRec.lfEscapement := 0;
 form1.canvas.Font.Handle := CreateFontIndirect(LogRec);
Только тут вот какая проблема, эта штука поддерживает не все шрифты, а только определенные, если установлен шрифт, который это удовольствие не поддерживает, то ничего не получится, но это не проблема, думаю шрифт поменять не составит ни для кого особого труда, да хоть на тот же Times New Roman


Время: 19:26.

Время: 19:26.
© OSzone.net 2001-