Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.07.2012, 11:50
ZolotukhinDen ZolotukhinDen вне форума
Прохожий
 
Регистрация: 03.07.2012
Сообщения: 5
Репутация: 10
По умолчанию Как сделать отключаемую сетку на графике в элементе Paintbox?

Имеется график функции, нарисованный в элементе Paintbox.

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

Пробовал включать сетку (с помощью RadioButton) путем рисования линий сетки зеленым цветом, а выключать сетку - поверх линий сетки рисовать линии цвета фона,на котором нарисован график - но тогда линии цвета фона проступают на самом графике функции. Как сделать отключаемую сетку,чтобы при ее отключении на графике не было видно изменений?

Буду благодарен подсказке.
Ответить с цитированием
  #2  
Старый 18.07.2012, 12:28
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Самый простой вариант - перерисовать график функции после отключения сетки.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
  #3  
Старый 18.07.2012, 12:38
ZolotukhinDen ZolotukhinDen вне форума
Прохожий
 
Регистрация: 03.07.2012
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от ~TB~
Самый простой вариант - перерисовать график функции после отключения сетки.
Не подходит, потому что очень много точек, и очень дорого процессорное время, хотелось бы именно с рисованием сетки "поколдовать"
Ответить с цитированием
  #4  
Старый 18.07.2012, 12:48
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Тогда используй это.
Сетку рисуй на отдельном слое. Потом просто делай слой невидимым-видимым.
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
  #5  
Старый 18.07.2012, 12:56
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

график рисуется в событии OnPaint у PaintBox?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 18.07.2012, 13:06
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от ZolotukhinDen
Не подходит, потому что очень много точек, и очень дорого процессорное время, хотелось бы именно с рисованием сетки "поколдовать"
Интересно, этож сколько точек нужно нарисовать чтобы это заняло очень много процессорного времени. Даже если бы количество точек было равно площади холста(что мало вероятно), то на эту операцию ушло бы миллисекунды...
Ответить с цитированием
  #7  
Старый 18.07.2012, 18:20
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

сетка рисуется на временном битмапе, при выборе ее отображать - копируем чистый график в другой временный битмап (или заранее рисуем в том числе на временном битмапе), а сетку на видимый график, при выборе не отображать - копируем чистый график обратно
ну или XOR
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #8  
Старый 18.07.2012, 22:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Как и сказано выше, отрисовка должна происходить в событии OnPaint. Иначе при любом перекрытии контрола изображении потеряется. Отсюда и выбираем варианты:
1. рисовать сетку на отдельном битмапе, что бессмысленно, так как всё равно всё рисуется с нуля.
2. рисовать всё вместе, но с проверкоё - RadioButton/CheckBox.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter