-
Нашел способ с помощью TLogFont, но как-то весьма хлопотно получается. Можно ли это сделать быстро и достаточно просто? Для Label или для StaticText.
-
а программировать вообще хлопотно.
-
Через создание меня делай. Обещаю вращать быстро.
-
[i2e] (12.09.08 09:00) Заплати кому ни будь, количество хлопот при этом стремится к нулю.
-
> Anatoly Podgoretsky © (12.09.08 10:10) [3]
это надо кошелек открывать, доставать, закрывать.. весьма хлопотно получается
-
> Vlad Oshin © (12.09.08 10:13) [4]
... отдавать....
-
еще и накапливать, чтоб отдавать)
-
какие все глумливые, наверно поддали в честь праздника? ладно, сам спросил, сам и расскажу, как сделал. благо текст хоть и немалый, но статичный, просто повернул его изображение в Paint и эту картинку разместил по месту. количество хлопот оказалось минимально. всем коллегам огромная благодарность за бесценные советы.
-
> Как повернуть текст на 90 градусов?
> просто повернул его изображение в Paint и эту картинку разместил > по месту.
значит, каков вопрос, таков ответ...
-
> [i2e] (12.09.2008 10:26:07) [7]
Вот так тебе и операцию по удалению гланд будут делать.
-
А Микрософт - отсталые... по-прежнему, даже в дотнетовском мсдне считают, что нужен логфонт...
-
есть вариант
for i 1..length(s) Canvas.textout(x,y,s[i]) y:=y-Canvas.Font.Height
только залочить как-то канву потом
-
ребяты, поглумились на славу. из всей переписки лишь один совет в тему.
ситуация мне напоминает знаете что? машина есть? вот едешь по дороге весь такой правильный, пешеходов на поворотах пропускаешь, кому надо дорогу даешь, из ряда в ряд не прыгаешь. правильный, не мешающий никому водитель, образец. и вдруг, разогнавшись чуть больше, вылетаешь на пешеходник, например. и какая-нибудь курва начинает базлать: а! носятся тут, житья нет! наворовали денег, накупили машин! ...и т.д. потом покажет средний палец, чего-нибудь еще посоветует. и такая досада берёт, когда получишь такую хрень ни за что. и думаешь, да идите вы в ж.., уважаемые, буду как все, таким же быдлом. и погнали...
ребята, давайте жить дружно. и уважать друг друга, по крайней мере своих коллег.
всем спасибо.
-
> [12] [i2e] (12.09.08 12:33)
Хех.... прикольно.... хорошо хоть бабку(или кого-там) не сшиб :)
> и уважать друг друга
Вот с этого и нужно было начинать. Теперь перечитай свой пост [0] и посмотри какая реализация[7] задуманного тебя устроила.... И где тут уважение?
-
продай машину, займись программированием.
-
Правила дорожного движения обсуждаются в Прочее, была там такая длинная ветка - можно или нельзя
-
Во-первых, мне не понятно недовольство автора. Во-вторых мне не понятно что такое "повернуть"? Вариант из [11] текст не поворачивает, вообще-то, но может автора и это устроит?
А с картинкой повернутой - это плохо. У пользователя могут быть настроены нестандартные шрифты или увеличенные.
-
SetWorldTransform
-
> Можно ли это сделать быстро и достаточно просто? Для Label > или для StaticText
Курить хэлп по классу TCanvas, особенно методы TextHeight и TextWidth. Идея должна придти сама...
Если так и не пришла, то создаем Graphics.TBitmap в памяти, заливаем белым, выводим текст на нем чёрным. Непосредственно на объекте - копируем пикселы с поворотом. Canvas.Pixels[x,y] := tmpBitmap.Canvas.Pixels[y,x];
Метод годится только для поворота на 90, 180 и 270 градусов.
-
PEAKTOP © (13.09.08 2:16) [18] Непосредственно на объекте - копируем пикселы с поворотом. Canvas.Pixels[x,y] := tmpBitmap.Canvas.Pixels[y,x]; Мало того, что тормоза, дак еще и при каждой перерисовке.
-
Кстати, тут нужен не TextWidth, а ширина Lebel'а, т.к. он считает ширину текста внутри строки, а тут нужно еще учитывать края - при шрифте italic реально нужная ширина больше, чем TextWidth.
-
Вот, на скорую руку: 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. Должно сработать. зы. Опять же, извиняюсь за выкладывание длинных листингов...
-
ззы. DeleteDC - выкинуть. Он тут не нужен =)
|