|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
||||||
Нарисовать на форме сетку, а при нажатии заменить на картинку14.11.2014, 23:19. Показов 5214. Ответов 19
Метки нет (Все метки)
Всем доброго времени суток. Делаю программу для рисования различных схем. Нужно нарисовать сетку на форме (см. вложение) это я реализовал:
...нужно рисовать по сетке. Т.е жмем на квадратик на сетке, заполняется только он. Нужно примерное так: ЛКМ-рисуем, ПКМ-вытираем. У меня нет идей, как это реализовать... Только 100-200 PictureBox'ов с процедурой на каждый (или общей, на все, если возможно) Но если так, то будет еще проблема, т.к размер поля для рисования должен выбрать пользователь, то количество PictureBox'ов будет меняться.Вообще не знаю, как реализовать. Помогите, пожалуйста. Заранее спасибо!
0
|
||||||
| 14.11.2014, 23:19 | |
|
Ответы с готовыми решениями:
19
Как при нажатии одного радиобаттона показать одну картинку, а при нажатии другого другую При нажатии на форме на кнопку нужно нарисовать квадратики
|
| 15.11.2014, 14:54 | ||||||
Сообщение было отмечено Памирыч как решение
Решение
Пример реализации. Думаю, что будет полезен только для небольшого размера сетки в противном случае, нужно переходить непосредственно к растру.
Здесь клетки заливаются цветом (черный/белый) но никаких проблем нет и для вставки выбранной картинки. Кнопки для выбора текущей картинки можно разместить справа на форме. Идея взята из программы игры Крестики/Нолики.
2
|
||||||
| 22.11.2014, 14:02 | |
Сообщение было отмечено Памирыч как решение
Решение
Вариант с растром. Размер сетки, число ячеек задаются в коде.
При клике левой кнопкой мыши вставляется выбранная картинка, при клике правой кнопкой - ячейка очищается.
4
|
|
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
|
| 22.11.2014, 21:57 [ТС] | |
|
ovva, спасибо! Ваш вариант почти идеален, не хватает только возможности заполнения/очищения зажатием ЛКМ/ПКМ
0
|
|
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
|
| 23.11.2014, 13:09 [ТС] | |
|
ovva, в Вашем варианте нужно кликать на каждую клетку отдельно, если удалить, то ПКМ, если заполнить, то ЛКМ. Но для моей программы - это не удобно (нужно рисовать много прямых, длинных линий и т.д). Поэтому нужно, чтобы была возможность заполнять/очищать клетки зажатием кнопок мышки, т.е зажали ЛКМ ---> Тянем мышку ---> Клетки заполняются. Так же и с ПКМ.
Каждый раз кликать не удобно. Нужно реализовать заполнение/очищение зажатием ЛКМ/ПКМ... Заранее спасибо.
0
|
|
| 23.11.2014, 14:16 | ||||||
Сообщение было отмечено Памирыч как решение
Решение
Внесите в код следующие изменения.
1
|
||||||
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
|
| 23.11.2014, 14:52 [ТС] | |
|
ovva, огромное спасибо! + пропала ошибка, если не выбрать картинку. Почти идеально, не хватает только одного - возможности просмотра заполняемого/очищаемого. Т.е чтобы посмотреть результат заполнения/очищения нужно отпустить ЛКМ/ПКМ, а это не совсем удобно. В идеале должно быть так: зажимаем ЛКМ --> тянем мышку на 10 клеток, когда тянем, сразу видим результат, что "натянули", так сказать
0
|
|
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
|
| 23.11.2014, 21:22 [ТС] | |
|
ovva, супер! Спасибо!
![]() П.С. Вспомнил про еще одну штуку, которой не хватает. Некоторые картинки должны накладываться поверх других, т.е поверх непрозрачной картинки наложить полупрозрачную. Чтобы, например, в программе можно было поверх желтого цвета (самая последняя кнопка) наложить тире (самая первая), а не заменить. Возможно? Заранее спасибо.
0
|
|
|
54 / 30 / 4
Регистрация: 15.01.2014
Сообщений: 354
|
|
| 24.11.2014, 13:01 | |
|
у меня вот такая ошибка как ее можно исправить?
0
|
|
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
||
| 24.11.2014, 21:34 [ТС] | ||
|
MACHOMAN, в последнем вложении этой проблемы нет, вроде.
Помогите, пожалуйста.
0
|
||
| 24.11.2014, 22:23 | |
|
Для начала определитесь, какое действие пользователя будет определять процедуру НАЛОЖЕНИЕ. Например ЛКМ+Ctrl. В процедуре setAction можно отслеживать эту ситуацию. Здесь вы имеете: grid(i, j) – картинка на сетке и А – выбранная картинка. Осталось объединить эти картинки, наложить А на grid(i, j) и результат сохранить в grid(i, j). Вот как то так.
1
|
|
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
||
| 29.11.2014, 12:49 [ТС] | ||
|
Я еще подумал... И так и не понял,
0
|
||
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
||||||
| 30.11.2014, 14:29 [ТС] | ||||||
|
ovva, спасибо! Извините, если я Вам уже надоел.
У меня еще 2 проблемы: 1. Наложение может сработать несколько раз, и картинка получится совсем не такой, как хотелось. 2. Не могу сохранить то, что нарисовал. Делал примерное так:
0
|
||||||
| 30.11.2014, 19:29 | ||||||
|
1. Не понял. В процессе рисовки с наложением, как и при простой рисовке, выбранная картинка вставляется во все пересекаемые при движении мыши клетки. Возможно какой то эффект возникает при дрожании мыши и неполном нажатии клавиши Ctrl.
2. Вставьте в используемый код.
1
|
||||||
|
9 / 9 / 5
Регистрация: 29.04.2014
Сообщений: 70
|
||
| 30.11.2014, 20:01 [ТС] | ||
|
Нужно запретить наложении больше 1 раза. Код на сохранение работает, спасибо!
0
|
||
| 30.11.2014, 20:01 | |
|
Помогаю со студенческими работами здесь
20
Нарисовать сетку из клеток на форме, отслеживая клики по каждой из них Заменить картинку у кнопки на 1-ой форме по клику на кнопку на 2-ой форме Как нарисовать картинку на форме
Как при нажатии на картинку открыть текст и картинку? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|