Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.005 c
4-1255362446
TStas
2009-10-12 19:47
2016.07.24
Вынести окно на первый план


15-1443310614
Drowsy
2015-09-27 02:36
2016.07.24
Что такое с компом?


3-1307684147
Pavor
2011-06-10 09:35
2016.07.24
BDE: Too many passwords


15-1447765802
Кто б сомневался
2015-11-17 16:10
2016.07.24
Digital signatures - как узнать name of signer программно


15-1441009172
Юрий Зотов
2015-08-31 11:19
2016.07.24
Рыдал. Только не знаю от чего - от смеха или от горя...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский