Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];
ВнизТекст на канвасе: получить позицию курсора Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c