Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2014, 15:50   #11
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

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

Изначально я загружаю все свои рисунки в imageList.

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

Эти события могут произойти после обработки некоторых функций в таймере.

Желательно, чтобы возможно было перерисовывать часть холста формы( только те что изменились). Но если это значительно усложнит код или логику программы, то , наверное откажусь. Т.е. если не получится перерисовывать часть, то буду перерисовывать все, если будет изменение хотя бы одного рисунка.

Как вы и писали при перекрытии формы программы другим окном, рисунки стираются

Пожалуйста распишите что нужно делать.
Заранее благодарен.
Illusiony вне форума Ответить с цитированием
Старый 30.11.2014, 15:57   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если очень горит на прямую на канвас формы, то в OnPaint перерисовка всего. Если в PaintBox аналогично в его OnPaint. Если в создаваемые динамически Image то один раз в момент создания прорисовка в Image.Picture.Bitmap.Canvas
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.11.2014, 16:37   #13
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Рисовать можно в TBitMap, а потом на форму скидывать по onPaint картинку с помощью Draw.
Arigato вне форума Ответить с цитированием
Старый 30.11.2014, 17:06   #14
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

А чем принципиально отличается рисование в Tbitmap и на самой форме?
Illusiony вне форума Ответить с цитированием
Старый 30.11.2014, 17:09   #15
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

TBitMap будет как буфер, в нем рисуем. А на саму форму выводим уже готовый рисунок.
Arigato вне форума Ответить с цитированием
Старый 30.11.2014, 17:12   #16
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

В смысле это для того чтобы рисунки не пропадали при закрытии их другими окнами?
Illusiony вне форума Ответить с цитированием
Старый 30.11.2014, 17:29   #17
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Ну и для этого тоже.
Arigato вне форума Ответить с цитированием
Старый 30.11.2014, 18:17   #18
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Почему то, когда я поменял рисование в Tbitmap стало вызывать ошибку, после нажатия на кнопку.

Код:
il1.Draw(buf_image.Canvas,0,20*A,k1);
до этого было:
Код:
il1.Draw(Form1.Canvas,0,20*A,k1);

Сдесь il1:TimageList
В начале самой программы добавил buf_image: Tbitmap в разделе public.
Больше ничего не менял.
То есть я еще на форму не перерисовывал , а только в TBitmap.

Последний раз редактировалось Illusiony; 30.11.2014 в 18:32.
Illusiony вне форума Ответить с цитированием
Старый 30.11.2014, 18:34   #19
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Ну так битмап надо еще создать и размеры его указать.
Arigato вне форума Ответить с цитированием
Старый 30.11.2014, 18:42   #20
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Точно, спасибо ,получилось, только, при перекрытии формы рисунки пропадают
Нужно в событие формы OnPaint все заново перерисовывать? тоесть туда записать:

Код:
Form1.Canvas.Draw(0,0,buf_image);
Да?

В OnPaint вписать таймер с какой он будет скоростью перерисовываться? или есть какие то другие способы?

Последний раз редактировалось Illusiony; 30.11.2014 в 18:45.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прозрачный фон для Image Randy.Mandy Компоненты Delphi 1 21.02.2012 00:49
Прозрачный фон xakkkkker Мультимедиа в Delphi 10 24.12.2008 09:44
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23
Прозрачный фон Label Alar Компоненты Delphi 0 30.10.2006 00:38