Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2007, 18:50   #1
Inbox
Пользователь
 
Аватар для Inbox
 
Регистрация: 10.01.2007
Сообщений: 77
По умолчанию развернуть label на 90 градусов вертикально

Хочу вот так вот, как вот это мне сделать?
Lable отображается в качестве размера (цифры),
размерные линии со стрелками и сама цифра, а может это не так делается?
Это тебе не следует читать.
Inbox вне форума Ответить с цитированием
Старый 11.06.2007, 11:19   #2
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Я знаю только 2 способа.
1. Сложный. Переписать код самого компонента Label, добавив возможность поворота.
2. Простой. Использовать OvcLabel или RzLabel. Где - то в нете должны быть.
3. Может быть есть еще способ, например через WinApi...
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 11.06.2007, 15:30   #3
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

И заправду - существует третий способ (и четвертый тоже). Только предлагаю вращать не label, а использовать графический вывод на форму (Канвас короче):
Код:
procedure CanvasSetAngle(C: TCanvas; A: Single);
var
  LogRec: TLOGFONT;     {Font informationen}
begin
  GetObject(C.Font.Handle,SizeOf(LogRec),Addr(LogRec));
  LogRec.lfEscapement := Trunc(A*10);
  C.Font.Handle := CreateFontIndirect(LogRec);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Var A: Integer;
begin
   A := Random(3600);
   CanvasSetAngle(Canvas, A / 10);
   Canvas.RectAngle(X-1,Y-1,X+1,Y+1);
   Canvas.TextOut(x, Y, FormatFloat('##0.0', A/10)+'°');
end;
вот и четвертый:
Код:
(*procedure CanvasTextOutAngle(C: TCanvas; x,y: Integer; A: Word; S: string);
var
  LogRec: TLOGFONT;
  FHandleOld, FHandleNew: HFONT;
begin
  GetObject(C.Font.Handle, SizeOf(LogRec), Addr(LogRec));
  LogRec.lfEscapement := d;

  {* Create a new font handle using the modified old font handle *}
  NewFontHandle := CreateFontIndirect(LogRec);

  {* Save the old font handle! We have to put it back when we are done! *}
  OldFontHandle := SelectObject(c.Handle,NewFontHandle);

  {* Finally. Output the text! *}
  c.TextOut(x,y,s);

  {* Put the font back the way we found it! *}
  NewFontHandle := SelectObject(c.Handle,OldFontHandle);

  {* Delete the temporary (NewFontHandle) that we created *}
  DeleteObject(NewFontHandle);

end; {* CanvasTextOutAngle *}
*)
Скачать !!!исходник!!!
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.

Последний раз редактировалось InternetStranger; 11.06.2007 в 15:33.
InternetStranger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повернуть изображение на 180 градусов? kl45gp Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 11.05.2013 13:10
поворот bitmapa на n градусов DmT Общие вопросы C/C++ 1 01.08.2008 02:09
Прога по переводу градусов ELL Помощь студентам 8 04.07.2008 23:02
Развернуть окно Михаил Юрьевич Общие вопросы Delphi 4 23.02.2008 16:44
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23