Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Текст через Канвас   Найти похожие ветки 

 
Boyza ©   (2004-04-15 00:14) [0]

Добрый вечер всем!
Подскажите, пожалуйста. Как задать угол вывода текста (через Canvas.TextOut)? Например вертикальный?


 
Anatoly Podgoretsky ©   (2004-04-15 00:52) [1]

procedure CanvasTextOutAngle (OutputCanvas: TCanvas; X,Y: integer;
   Angle: Word; St: string);
var
   LogRec:        TLogFont;
   NewFontHandle: HFONT;
   OldFontHandle: HFONT;
begin
   GetObject (OutputCanvas.Font.Handle, SizeOf (LogRec), Addr (LogRec));
   LogRec.lfEscapement := Angle;
   NewFontHandle := CreateFontIndirect (LogRec);
   OldFontHandle := SelectObject (OutputCanvas.Handle, NewFontHandle);
   OutputCanvas.TextOut (x, y, St);
   NewFontHandle := SelectObject (OutputCanvas.Handle, OldFontHandle);
   DeleteObject (NewFontHandle);
end;


 
tytus ©   (2004-04-15 01:00) [2]

Тут правда речь о шрифте, но пример думаю, более чем выразительнее и доходчивее (Валерий Фаронов Делфи6).
Нужна голая форма, а остальное - зри в корень:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
 TForm1 = class(TForm)
   procedure FormPaint(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormPaint(Sender: TObject);
var
 X: Integer;
 LF: TLogFont;
 Fnt: HFont;
const
 Text = "Лучшая в мире система программирования!";
begin
 // Определяем параметры нового шрифта
 FillChar(LF, SizeOf(LF), 0);
 with LF do
 begin
   lfHeight := 20;
   lfWeight := fw_Medium;
   lfUnderline := 1;
   lfEscapement := 450;
   StrPCopy(lfFaceName, "Courier New Cyr");
 end;
 with Form1.Canvas do
 begin
   // Создаем шрифт
   Fnt := CreateFontIndirect(LF);
   // присваиваем его дискриптор шрифту канвы
   Font.Handle := Fnt;
   // выводим текст под углом +45 градусов
   TextOut(0, 300, Text);
   X := TextWidth(Text);
   DeleteObject(Fnt);  // Удаляем ненужный шрифт
   // Изменяем параметры шрифта
   with LF do
   begin
     lfHeight := 120;
     lfEscapement := -900;
     lfWeight := fw_Heavy;
     StrPCopy(LF.lfFaceName, "Arial Cyr");
   end;
   Fnt := CreateFontIndirect(LF); // Создаем новый шрифт
   Font.Handle := Fnt;
   Font.Color := clRed;
   // выводим с наклоном -90 градусов
   TextOut(X+10, 10, "Delphi");
   DeleteObject(Fnt); // Удаляем ненужный шрифт
 end;
end;

end.


 
Boyza ©   (2004-04-15 01:06) [3]

Процедура текст выводит, но угол не изменяется :(


 
Boyza ©   (2004-04-15 01:11) [4]

(Это было написано Анатолию Подгорецкому)


 
Boyza ©   (2004-04-15 01:16) [5]

tytus

Спасибо, помогло:)



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1082206330
Viktor
2004-04-17 16:52
2004.05.02
Проверить объект на существование


1-1081411152
Arhis
2004-04-08 11:59
2004.05.02
Проблемы с Rave reports


1-1081676847
Calabonga
2004-04-11 13:47
2004.05.02
Проблема с Delphi7...вернее со встроенным дебаггером...


3-1080886816
Patrick
2004-04-02 10:20
2004.05.02
Упаковка данных.


1-1082097647
Litva
2004-04-16 10:40
2004.05.02
Что луче?...