Nano Hash - криптовалюты, майнинг, программирование

Создание масштабируемой текстовой области без окон, которая проксируется на реальное текстовое поле Winforms в C #

Важно: заявленная функциональность нам действительно нужна, поэтому не предлагайте альтернативы.

Мы пытаемся отображать и вводить текст в настраиваемом элементе управления WinForms, который включает текстовые и нетекстовые области - другими словами, современный холст.

Нам нужно иметь возможность отображать текст и курсор на настраиваемом элементе управления с различными уровнями масштабирования и с использованием других настраиваемых эффектов. Однако мы не хотим (или не имеем необходимых средств) для написания кода метода ввода с клавиатуры и мыши, кода линейных служб и т. Д. - решение должно поддерживать все языки, которые поддерживает стандартный TextBox.

Следовательно, подход, который мы рассматриваем, заключается в использовании скрытого текстового поля и маршрутизации к нему событий клавиатуры и мыши после подходящего перевода, а также использования его общедоступных методов доступа для определения расположения символов. Теоретически это позволило бы нам выделить выделенный текст, нарисовать курсор, выполнить правильные действия, когда пользователь нажимает клавишу (включая выбор и удаление текста с помощью клавиатуры).

Другими словами, текстовая область является прокси-сервером скрытого текстового поля. В результате мы расширяем функциональность текстового поля, преодолевая его ограничения, такие как отсутствие масштабирования и т. Д.

Мы ожидаем, что часть дисплея выполнима, но ввод с клавиатуры и мыши, вероятно, очень сложен.

Вопросы: Пробовали ли это раньше с успехом? Любой рабочий код был бы отличным.

Обновление: быстрый и грязный эксперимент, похоже, показывает, что TextBox не учитывает координаты мыши, отправленные в сообщениях мыши, но, похоже, напрямую считывает текущее положение мыши. Поэтому новый вопрос:

Можно ли преобразовать все события мыши TextBox в прямые действия TextBox таким образом, чтобы это работало на всех языках? Наше предположение, что метода проверки попадания GetCharIndexFromPosition вместе с методом выделения текста Select должно хватить. Это кажется разумным?


  • Очень интересно! Держите нас в курсе, если вы достигнете каких-либо целей! 03.09.2010

Ответы:


1

Я бы порекомендовал вам использовать скрытый TextBox, как вы предлагаете, а затем отправить ему сообщения WM_PRINT, чтобы его содержимое было нарисовано на растровом изображении. Затем вы можете нарисовать это растровое изображение на реальной интересующей области и при этом применить такие изменения, как масштабирование или поворот и так далее. Любые сообщения клавиатуры могут быть просто перенаправлены в скрытый TextBox, и поэтому курсор и содержимое будут обновлены так, как ожидал пользователь. Сложная часть - это просто работа с мышью. Вам нужно взять клиентские координаты, а затем использовать обратное преобразование (масштабирование, вращение и т. Д.), Чтобы получить от клиента фактические координаты скрытого TextBox.

03.09.2010
  • Спасибо, только что добавили обновление с вопросом о превращении событий мыши в действия с текстовым полем. 03.09.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..