Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.07.24;
Скачать: CL | DM;

Вниз

Текст на канвасе: получить позицию курсора   Найти похожие ветки 

 
AlexC   (2014-10-19 23:23) [0]

Погуглил по данной теме, но как ни странно, ответов на мой вопрос не нашел:
есть текст, выведенный на канвас какого либо контрола. Пользователь кликает мышкой по этому тексту и нужно получить символ, по которому он кликнул. В голову приходит только одно решение "в лоб"


var
 S: string; // Здесь содержится текcт, который вывели на канвас
 
 Tmp := "";
 for i := 1 to Length(S) do
 begin
    Tmp := Tmp + S[i];
    if Canvas.TextWidth(Tmp) > Y then
    begin
       Result := i;
       Break;
    end;
 end;


т.е. идея понятна.
Но возможно есть какое то более элегантное решение?


 
Германн ©   (2014-10-20 01:29) [1]


> есть текст, выведенный на канвас какого либо контрола. Пользователь
> кликает мышкой по этому тексту

Есть картинка нарисованная на канве какого-либо контрола. Пользователь кликает мышкой по этой картинке. И что там нужно получить?


 
brother ©   (2014-10-20 04:29) [2]

так исходный текст Вы знаете или его также надо узнать?


 
Kilkennycat ©   (2014-10-20 10:11) [3]


>  S: string; // Здесь содержится текcт, который вывели на
> канвас

xyabc : array - а здесь содержаться координаты, которые заполнили, когда выводили текст  на канвас.


 
Kilkennycat ©   (2014-10-20 10:13) [4]

и даже если вашим способом, то лучше использовать винапишную функцию DrawText с флагом DT_CALCRECT и искать бинарным поиском, а не перебором


 
Alex_C   (2014-10-20 11:05) [5]

Поясню: да, текст я знаю, фонт знаю, позицию начала текста - тоже знаю.


 
MBo ©   (2014-10-20 11:24) [6]

Если текст выводится в одну строчку, и про него всё известно, то
GetTextExtentExPoint



Страницы: 1 вся ветка

Текущий архив: 2016.07.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1442698201
Юрий
2015-09-20 00:30
2016.07.24
С днем рождения ! 20 сентября 2015 воскресенье


2-1415045309
M.A.
2014-11-03 23:08
2016.07.24
WM_MOUSEMOVE для STATIC


2-1413564529
azl
2014-10-17 20:48
2016.07.24
Вызов процедуры OnClick из модуля


15-1442241297
timokhasarov
2015-09-14 17:34
2016.07.24
Access ошибка доступа к программе


2-1416491371
Дмитрий
2014-11-20 16:49
2016.07.24
MySQL, AnyDAC, плавающий "Out of sync"