Форум: "Прочее";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
ВнизКак повернуть текст на 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.005 c