![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Гость_Cherry |
|
|||
|
Unregistered |
Как определить ширину символа или строки в пикселах в Richedit?
|
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Воспользуйся GetTextExtentPoint32
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Как пользоваться GetTextExtentPoint32?
|
|||
|
||||
| AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Вот описание
Использовать где-то так
|
||||
|
|||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Pr_HWND - дескриптор любого окна для которого надо вычислить ширину текста(т.е. сколько пикселей займет ентот текст при отображении его в ентом окне
S - текст
Использование i:=GetStr_Width(RichEdit1.Handle,'wer'); Удачи. -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Использую
procedure TForm1.SpeedButton1Click(Sender: TObject); begin SpeedButton1.Caption:=IntToStr(GetStr_Width(RichEdit1.Handle,'w')); end; Функция выдает значение 17. При изменении параметров шрифта, значение не меняется. Что не так? |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Т.ч. можно написать так:
Пример использования: Caption:=IntToStr(GetStr_Width(RichEdit1.Handle,RichEdit1.Font.Handle,'W')); Удачи. Это сообщение отредактировал(а) Girder - 29.11.2004, 15:53 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| CHERRY |
|
|||
![]() Прохожий ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.6.2002 Где: Одесса Репутация: нет Всего: -2 |
Для шрифта Courier New, Font.Size:=10, Font.Pitch:=fpFixed
для символа 'Z' функция возвращает значение 16. В то же время для тех же параметров шрифта PaintBox1.Canvas.TextWidth('Z') возвращает значение 8. Кто врет? --------------------
Трясу надежды ветвь, но где желанный плод? |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
В принципе ни кто...
TextWidth делает енто без учета средней ширины символа... PS: Ты можеш заменить Result:=LoWord(Size.cx+TM.tmAveCharWidth) на Result:=Size.cx и сравнить получившиеся значения c TextWidth. Это сообщение отредактировал(а) Girder - 29.11.2004, 19:29 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| CHERRY |
|
|||
![]() Прохожий ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.6.2002 Где: Одесса Репутация: нет Всего: -2 |
Result:=Size.cx дает такой же результат, что и TextWidth.
Может я пошел не верным путем. Я хочу нарисовать у RichEdit правую границу, по которой текст будет переноситься. Положение границы (например это Panel с шириной 1-2 пиксела) я знаю в пикселах. Поэтому зная сколько пикселов в RichEdit занимает символ, я смогу переходить от пикселов к символам и наоборот. Или это сильно горбато? --------------------
Трясу надежды ветвь, но где желанный плод? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |