Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Delphi. создание визуальных компонент.

15K
21 августа 2006 года
evginho
15 / / 21.08.2006
Поделитесь опытом или доками по созданию своих визульных компонент.
Собственно интересует один момент: рисование компонента.
Для прорисовки компонента я перегружаю Paint(в TGraphicControl), но смушает, то что он слищком часто перерисовывается.
Как наиболее оптимально рисовать компоненту?
286
22 августа 2006 года
misha_turist
572 / / 28.11.2005
Слошком часто - это как?
15K
22 августа 2006 года
evginho
15 / / 21.08.2006
Например когда над ним перетаскиваю окно, он перерисовывается и моргает. Когда же я смотрю на стандартные виндовые компоненты такого не происходит.
Собственно я так понимаю, что стандартные компоненты перерисовываеют только необходимую часть. Как это сделать и какие сообщения перехватывать?
286
22 августа 2006 года
misha_turist
572 / / 28.11.2005
Код:
procedure TCustomForm.WMPaint(var Message: TWMPaint);
var
  DC: HDC;
  PS: TPaintStruct;
begin
  if not IsIconic(Handle) then
  begin
    ControlState := ControlState + [csCustomPaint];
    inherited;
    ControlState := ControlState - [csCustomPaint];
  end
  else
  begin
    DC := BeginPaint(Handle, PS);
    DrawIcon(DC, 0, 0, GetIconHandle);
    EndPaint(Handle, PS);
  end;
end;


Попробуй, может поможет.
Но предупреждаю сзаранее, я визуальных компонент не создавал, а данный пример нашол только что...
339
23 августа 2006 года
verybadbug
619 / / 12.09.2005
при создании компонента создаёшь TBitmap..... рисуешь когда тебе нужно в нём то, что юзер должен увидеть... а потом при отрисовке делаешь Canvas.Draw и вся любовь.....

2 misha_turist Paint выполняется при сообщении WM_PAINT... поэтому то, что ты предложил и то, что используется - равносильно....

Цитата:
компоненты перерисовываеют только необходимую часть


TCanvas.ClipRect

15K
23 августа 2006 года
evginho
15 / / 21.08.2006
А как определить какую часть нужно перерисовать?
7.8K
23 августа 2006 года
DrCoder
106 / / 27.01.2006
взять штангенциркуль... ну и вперед )))
а вообще при правильно поставленных задачах такого гимора не должно быть
15K
23 августа 2006 года
evginho
15 / / 21.08.2006
[QUOTE=DrCoder]взять штангенциркуль... ну и вперед )))
а вообще при правильно поставленных задачах такого гимора не должно быть[/QUOTE]
Я имею виду например такую ситуацию:
Над моей компонентой проехало окно, винда же должна компоненте передать какую ее часть нужно перерисовать, что-бы не перерисовывать компоненту полностью.
Как мне этот месседж получить?
5
23 августа 2006 года
hardcase
4.5K / / 09.08.2005
[QUOTE=evginho]А как определить какую часть нужно перерисовать?[/QUOTE]
у нормального окна можно спросить GetUpdateRect апишкой прямоугольник прорисовки
6.8K
23 августа 2006 года
Romikgy
84 / / 28.04.2005
А дабл буфферинг ставил?
339
27 августа 2006 года
verybadbug
619 / / 12.09.2005
ВЫ ЧЁ СЛЕПЫЕ???
TCanvas.ClipRect - этот Rect и требует перерисовки...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог