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

Вниз

Как повернуть текст на 90 градусов?   Найти похожие ветки 

 
[i2e]   (2008-09-12 09:00) [0]

Нашел способ с помощью TLogFont, но как-то весьма хлопотно получается.
Можно ли это сделать быстро и достаточно просто? Для Label или для StaticText.


 
KilkennyCat ©   (2008-09-12 10:02) [1]

а программировать вообще хлопотно.


 
TLogFont   (2008-09-12 10:04) [2]

Через создание меня делай.
Обещаю вращать быстро.


 
Anatoly Podgoretsky ©   (2008-09-12 10:10) [3]

[i2e]   (12.09.08 09:00)  
Заплати кому ни будь, количество хлопот при этом стремится к нулю.


 
Vlad Oshin ©   (2008-09-12 10:13) [4]


> Anatoly Podgoretsky ©   (12.09.08 10:10) [3]

это надо кошелек открывать, доставать, закрывать.. весьма хлопотно получается


 
KilkennyCat ©   (2008-09-12 10:14) [5]


> Vlad Oshin ©   (12.09.08 10:13) [4]


... отдавать....


 
brother ©   (2008-09-12 10:18) [6]

еще и накапливать, чтоб отдавать)


 
[i2e]   (2008-09-12 10:26) [7]

какие все глумливые, наверно поддали в честь праздника?
ладно, сам спросил, сам и расскажу, как сделал.
благо текст хоть и немалый, но статичный, просто повернул его изображение в Paint и эту картинку разместил по месту.
количество хлопот оказалось минимально.
всем коллегам огромная благодарность за бесценные советы.


 
brother ©   (2008-09-12 10:34) [8]

> Как повернуть текст на 90 градусов?


> просто повернул его изображение в Paint и эту картинку разместил
> по месту.

значит, каков вопрос, таков ответ...


 
Anatoly Podgoretsky ©   (2008-09-12 10:40) [9]

> [i2e]  (12.09.2008 10:26:07)  [7]

Вот так тебе и операцию по удалению гланд будут делать.


 
KilkennyCat ©   (2008-09-12 10:54) [10]

А Микрософт  - отсталые... по-прежнему, даже в дотнетовском мсдне считают, что нужен логфонт...


 
Vlad Oshin ©   (2008-09-12 11:22) [11]

есть вариант

for i 1..length(s)
Canvas.textout(x,y,s[i])
y:=y-Canvas.Font.Height

только залочить как-то канву потом


 
[i2e]   (2008-09-12 12:33) [12]

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

ситуация мне напоминает знаете что?
машина есть? вот едешь по дороге весь такой правильный, пешеходов на поворотах пропускаешь, кому надо дорогу даешь, из ряда в ряд не прыгаешь. правильный, не мешающий никому водитель, образец.
и вдруг, разогнавшись чуть больше, вылетаешь на пешеходник, например.
и какая-нибудь курва начинает базлать: а! носятся тут, житья нет! наворовали денег, накупили машин! ...и т.д. потом покажет средний палец, чего-нибудь еще посоветует.
и такая досада берёт, когда получишь такую хрень ни за что.
и думаешь, да идите вы в ж.., уважаемые, буду как все, таким же быдлом. и погнали...

ребята, давайте жить дружно. и уважать друг друга, по крайней мере своих коллег.

всем спасибо.


 
{RASkov} ©   (2008-09-12 12:39) [13]

> [12] [i2e]   (12.09.08 12:33)

Хех.... прикольно.... хорошо хоть бабку(или кого-там) не сшиб :)

> и уважать друг друга

Вот с этого и нужно было начинать.
Теперь перечитай свой пост [0] и посмотри какая реализация[7] задуманного тебя устроила.... И где тут уважение?


 
KilkennyCat ©   (2008-09-12 12:42) [14]

продай машину, займись программированием.


 
Anatoly Podgoretsky ©   (2008-09-12 13:36) [15]

Правила дорожного движения обсуждаются в Прочее, была там такая длинная ветка - можно или нельзя


 
KSergey ©   (2008-09-12 14:38) [16]

Во-первых, мне не понятно недовольство автора.
Во-вторых мне не понятно что такое "повернуть"? Вариант из [11] текст не поворачивает, вообще-то, но может автора и это устроит?

А с картинкой повернутой - это плохо. У пользователя могут быть настроены нестандартные шрифты или увеличенные.


 
han_malign ©   (2008-09-12 16:50) [17]

SetWorldTransform


 
PEAKTOP ©   (2008-09-13 02:16) [18]

> Можно ли это сделать быстро и достаточно просто? Для Label
> или для StaticText


Курить хэлп по классу TCanvas, особенно методы TextHeight и TextWidth. Идея должна придти сама...

Если так и не пришла, то создаем Graphics.TBitmap в памяти, заливаем белым, выводим текст на нем чёрным. Непосредственно на объекте - копируем пикселы с поворотом. Canvas.Pixels[x,y] := tmpBitmap.Canvas.Pixels[y,x];

Метод годится только для поворота на 90, 180 и 270 градусов.


 
GrayFace ©   (2008-09-13 20:48) [19]

PEAKTOP ©   (13.09.08 2:16) [18]
Непосредственно на объекте - копируем пикселы с поворотом. Canvas.Pixels[x,y] := tmpBitmap.Canvas.Pixels[y,x];

Мало того, что тормоза, дак еще и при каждой перерисовке.


 
GrayFace ©   (2008-09-13 20:55) [20]

Кстати, тут нужен не TextWidth, а ширина Lebel"а, т.к. он считает ширину текста внутри строки, а тут нужно еще учитывать края - при шрифте italic реально нужная ширина больше, чем TextWidth.


 
Renegat ©   (2008-09-13 21:07) [21]

Вот, на скорую руку:

program Hello;
uses Windows;

const
 PHS = "Hello, world!";
 FNS = "Verdana";

var
 DC, WW, WH, TL, MF, TF: DWORD;

function BuildFont(FName:PChar; FSize:word; Width:LongInt; i, u:boolean; Angle:Integer):HFONT;
var
 LF: LOGFONT;
begin
 FillChar(LF, SIZEOF(LOGFONT), 0);
 with LF do begin
   lfHeight         := -FSize;
   lfWeight         := Width;
   lfItalic         := abs(longInt(i));
   lfUnderline      := abs(longInt(u));
   lfCharSet        := DEFAULT_CHARSET;
   lfOutPrecision   := OUT_DEFAULT_PRECIS;
   lfClipPrecision  := CLIP_DEFAULT_PRECIS;
   lfQuality        := DEFAULT_QUALITY;
   lfPitchAndFamily := FF_DONTCARE or DEFAULT_PITCH;
   lfEscapement     := Angle;
   lfOrientation    := Angle;
 end;
 lstrcpy(LF.lfFaceName, FName);
 Result:=CreateFontIndirect(LF);
end;

begin
 Randomize;
 DC:=GetDC(0);
 WW:=GetSystemMetrics(SM_CXSCREEN);
 WH:=GetSystemMetrics(SM_CYSCREEN);
 TL:=Length(PHS);
 MF:=BuildFont(FNS, 17, FW_NORMAL, False, False, Random(45)*10);
 TF:=SelectObject(DC, MF);

 repeat
   if GetAsyncKeyState(VK_ESCAPE)<0 then break;

   SetBkMode(DC, TRANSPARENT);
   SetTextColor(DC, RGB(Random(256), Random(256), Random(256)));
   TextOut(DC, Random(WW), Random(WH), PHS, TL);

   Sleep(10);
 until 1=0;

 SelectObject(DC, TF);
 InvalidateRect(0, nil, True);
 ReleaseDC(0, DC);
 DeleteDC(DC);
 DeleteObject(MF);
end.


Должно сработать.
зы. Опять же, извиняюсь за выкладывание длинных листингов...


 
Renegat ©   (2008-09-13 21:09) [22]

ззы. DeleteDC - выкинуть. Он тут не нужен =)



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

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

Наверх




Память: 0.52 MB
Время: 0.019 c
3-1209101225
дучф_ч
2008-04-25 09:27
2008.11.09
при удалении полей таблицы ее размер не уменьшается


6-1195066750
Алекс_
2007-11-14 21:59
2008.11.09
Номер сокета


2-1222926225
tytus
2008-10-02 09:43
2008.11.09
idFTP докачка файла + чтение из файла


2-1222860218
renex
2008-10-01 15:23
2008.11.09
не передается динамический массив в функцию


2-1222779966
cruiser
2008-09-30 17:06
2008.11.09
Ловим сообщения программы