Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GDI+, Direct2D, firemonkey и все все все 
:(
    Опции темы
gonzales
Дата 5.6.2013, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: 1
Всего: 2



у меня два экрана, я вижу, что оно Paint постоянно вызывается
Код

procedure TFrameImage.Paint;
begin
 inherited Paint;
 Canvas.Brush.Style := bsClear;
 Canvas.FillRect(ClientRect);
end;

вот такой код приводит к цикличности. 

Это сообщение отредактировал(а) gonzales - 5.6.2013, 16:06
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Beltar
Дата 5.6.2013, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 1
Всего: 7



Это проблема не заливки, а базового класса, у меня все работает именно потому что TCustomControl. При наследовании от TImage тоже загрузка проца в 100% вечным циклом. Попробуй унаследоваться от TGraphicControl, который обычно и юзают для своих компонентов, которым не надо оконного дескриптора, с ним у меня все правильно работает и ничего не виснет, а что там у TImage уже сделано смотреть надо.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
gonzales
Дата 6.6.2013, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: 1
Всего: 2



Beltar, спасибо большое! В общем и целом понятно. Буду пробывать TGraphicControl
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
gonzales
Дата 5.7.2013, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 13.3.2006

Репутация: 1
Всего: 2



Beltar, прошу помощи. 
Я переделал компонент на TGraphicControl, соответственно 
Код

procedure TFrameImage.Paint;
  begin
    inherited Paint;
    DrawImage;
  end;


но заметил одну особенность, если у меня на форме несколько компонентов TFrameImage, то при изменении одного, перерисовываются все, то есть Paint срабатывает для всех, даже если они не перекрываются. Соответственно при сложных перерисовках и большом кол-ве компонентов опять имею тормоза. Как заставить перерисовываться только компонент, с которым сейчас производятся манипуляции? 
пробывал внедрять флаг needrepaint
Код

procedure TFrameImage.Paint;
  begin
    inherited Paint;
    if needrepaint=true then
    DrawImage(true, 1);
    needrepaint:=false;
  end;

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







--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!!
PM MAIL   Вверх
Gwire
Дата 29.7.2013, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



gonzales, я на GDI+ делал стрелочный индикатор.
И заметил интересную особенность если перерисовывать на холсте TWinControl (скажем TPanel) c размером, подогнанным под то, что собираешься рисовать,
то производительность заметно увеличивается (в сравнении, если рисовать прямо на холсте TForm)

По поводу оптимизации подумай, что у тебя статичное и рисуй его в на холсте буферного TBitmap.
B момент перерисовки просто "печатай" с помощью BitBlt(), а после дорисуй динамические элементы.
Например: В Индикаторе шкала ёмкая но статичная. Стрелка динамическая но она одна =)

Если я правильно понял у тебя графические объекты которые нужно перемещать по форме.
Здесь есть "захваченный" и "остальные". Так вот "остальные" - это статика. В TBitmap рисуешь все кроме "захваченного".
А захваченный рисуешь уже на TWinControl.

По другому еще можно  для каждого графического объекта сделать "обертку" на основе TGraphicControl, 
тогда - что и когда перерисовывать будет "думать" система. 

- - - - - -
PS: Если конечно графические объекты у тебя сами не "шевелятся".
Хотя я думаю и там можно найти статику. smile

- - - - - -
PPS: Не увидел вторые станицы, на которой рассмотрены некоторые моменты smile

Это сообщение отредактировал(а) Gwire - 29.7.2013, 09:26
PM MAIL   Вверх
Beltar
Дата 12.10.2013, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 1
Всего: 7



Хм-м. Похоже, что из-за TGraphicControl и перерисовка всех, он ведь своей канвы не имеет и рисуется поверх винконтрола на котором лежит. Т. е. нужен все-таки кто-то с дескриптором вроде TCustomControl.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0906 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.