Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1222856610
Giga
2008-10-01 14:23
2008.11.09
Загрузка данных в ComboBox


2-1222845582
Armond
2008-10-01 11:19
2008.11.09
Поиск в гриде


4-1199736674
Compiler
2008-01-07 23:11
2008.11.09
Rect текста


2-1222750004
Gerbert
2008-09-30 08:46
2008.11.09
Вопрос по свойству "HomeName" у компонента "OraSession"


4-1199716804
webbrowser
2008-01-07 17:40
2008.11.09
Свойства обозревателя





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский