Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 9

Остановка рисования в Image

24.04.2012, 20:16. Показов 1405. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Не могу придумать как останавливать рисование: При движении мыши на Image рисуется кривая + создается массив с координатами нарисованных точек. Нужно, например, выводить сообщение что в массиве х уже есть такая координата (то есть мы начали двигать мышь в обратную сторону. То что рисуется - функция и нельзя чтобы пользователь её так нарисовал)
Заранее спасибо, объяснил как смог
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 if (! Shift.Contains(ssLeft)) return;
 {
 Image1->Canvas->LineTo(X,Y);
         x[n]=X;
         y[n]=Y;
         n++;
 }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2012, 20:16
Ответы с готовыми решениями:

Как вставить Jpeg в Image? И какие форматы можно вставить в Image?
Подскажите как вставить Jpeg в Image? И какие форматы можно вставить в Image? Добавлено через 53 секунды вставка в image из...

Процедура рисования на image
Здравствуйте. Возникла проблема при попытке написания процедуры, выводящей на image граф. пусть мне надо вывести на image1 линию. Вопрос,...

Какой процедурой нужно пользоваться для рисования через canvas на image?
Как должен выглядеть код и какое свойство объекта нужно использовать, чтобы через canvas рисовать на image?

7
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.04.2012, 20:20
Можно программно переставлять курсор "назад" не давая пользователю нарушать ваше условие, например с помощью
C++
1
2
SetCursorPos();
GetCursorPos();
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
24.04.2012, 21:12
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) {
    static bool last_x = 0;
    if ( Shift.Contains( ssLeft ) && X >= last_x ) {
        Image1->Canvas->LineTo( x[n] = last_x = X, y[n++] = Y );
    }
    if ( Shift.Contains( ssRight ) ) last_x = 0; // движение курсора с зажатой правой кнопкой сбрасывает ограничение по Х
}
1
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 9
24.04.2012, 22:00  [ТС]
извините, но что-то не очень
Пожалуйста, делитесь своими идеями.

Добавлено через 4 минуты
Avazart, очень хорошая идея! Можно расписать её, я просто не очень подкован =)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.04.2012, 22:40
Думаю легче обрабатывать событие Image1MouseUp где проверять уникальность точек и если одинаковые точки: стиреть линию,очистить массив и поросить пользователя нарисовать линию заного.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
24.04.2012, 23:17
Цитата Сообщение от igormudrak Посмотреть сообщение
извините, но что-то не очень
Пожалуйста, делитесь своими идеями.
А вы изъясняйтесь поопределеннее, будут вам и идеи.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
25.04.2012, 12:40
1. Существующие точки занести в массив.
2. При движении мыши проверять существование точки:
C++
1
2
3
if(точка) {
  continue;
}
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.04.2012, 13:03
- да просто используйте клавиатуру: допустим, рисование будет при левой кнопке мышки и нажатой Shift -
Code
1
if (Shift.Contains(ssShift)&&Shift.Contains(ssLeft))
- отпустил Shift - кончил рисовать. А при нажатой правой кнопке можно устроить стирание последних координат из массива.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2012, 13:03
Помогаю со студенческими работами здесь

[Pawn] Остановка на конечной точке, или остановка поворота при достижении заданного угла
Всем здравствуйте. У меня такой вопрос, реализация, по возможности более просто, остановка на конечной точке, или остановка поворота, при...

Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась в пусто Image, а Image на который нажали исчезал.
Имеется 4 Image в 3 из них находятся картинки, а 4 пустой. Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась...

Image 1 под Image 2 и Image 3 как заставить его работать как кнопку?
Имеется несколько Image, все они расположены друг на друге, Image используемый как кнопка перестаёт работать когда поверх него расположен...

Image 1 под Image 2 и Image 3 как заставить его работать как кнопку?
Имеется несколько Image, все они расположены друг на друге, Image используемый как кнопка перестаёт работать когда поверх него расположен...

Python v2.7. PyGame. Разница в пикселях между image.load и image.fill
Здравствуйте. Учусь пайтону, пишу небольшой шутер. Возникла проблема в, очевидно, этой части кода. Если просто заполнить цветом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru