Вывод текста под углом: проблема

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Вывод текста под углом: проблема

Сообщение X-BOND » 06.08.2004 (Пт) 15:35

Есть маленький вопросик: как можно вычислить координаты текста, созданного с помощью CreateFontIndirect (там задается определенный угол наклона, выравнивание по центру) Проблема в том, что после рисования TextOut-ом часть текста может оказатся обрезанной слева и/или сверху. Какие будут предложения?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.08.2004 (Пт) 17:40

Будет предложение заценит также функцию DrawText.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 06.08.2004 (Пт) 18:03

Попробовал - не то. Выставляю RECT: Top=0, Left=0, Bottom=10.., Right=10.. , все равно при градусах больше 0 текст уходит за пределы формы.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.08.2004 (Пт) 18:26

Эээ. А разве не лучше пользоваться функцией ExtTextOut()? Она вроде как больше позволяет... Ну или, соответственно, DrawTextEx().

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.08.2004 (Пт) 19:02

Так там же флагов много, которые с DT_ начинаются. Поиграйся с ними.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 08.08.2004 (Вс) 11:40

А функция GetTextExtentPoint32 подойдет?
Листинги не горят!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.08.2004 (Вс) 11:45

Faust писал(а):А функция GetTextExtentPoint32 подойдет?

Думаю, нет:
When returning the text extent, this function assumes that the text is horizontal, that is, that the escapement is always 0. This is true for both the horizontal and vertical measurements of the text. Even if using a font specifying a nonzero escapement, this function will not use the angle while computing the text extentthe application must convert it explicitly.
(http://msdn.microsoft.com/library/en-us ... t_8smq.asp)

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 08.08.2004 (Вс) 11:56

Хм... Оперативно. Но ведь можно поупражнятся в геометрии: пускай A - угол наклона текста, H - его высота в горизонтальном положении, W - его ширина в горизонтальном положении. Тогда при повороте на A получим:
Код: Выделить всё
HNew=H*cos(A)+W*sin(A) 'высота повернутого текста
WNew=W*cos(A)+H*sin(A) 'ширина повернутого текста
Листинги не горят!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 196

    TopList  
cron