Перекрытие отрисовки заднего фона.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Перекрытие отрисовки заднего фона.

Сообщение olegy123 »

Помогите.
Я тут стал разбираться с DX. Хочется рисовать в окошке TWinControl.
Нормально, кнанву рисую .. но почему то Lazarus перерисовывает мне задний фон.
Точнее фон родителя окна.. почему то постоянно мне канву из DX перекрашивает в фонюю


стал отлаживать код. Сталкнулся с интересной функцией.
GetNeedParentPaint(AWindowInfo:PWin32WindowInfo;AWinContrlol:TWinContrlol):Boolean; в win32callback.inc

Все там же TWindowProcHelper.SendPaintMessages(ControlDC:HDC);

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

Можно ли от этого избавится? Существуют ли волшебные overlapping галочки?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Вроде как если у родителя выставлен WS_CLIPCHILDREN оно не должно отрываться на детках.
может контрол сам себе фон рисует? если так, то переопределение EraseBackground должно спасти

Добавлено спустя 2 минуты 6 секунд:
Для лазаря есть аналог TOpenGLControl на DX?
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

zub писал(а):Для лазаря есть аналог TOpenGLControl на DX?

Нема, есть только хендлы DX9/DX10/DX11/DX12
https://github.com/CMCHTPC/DelphiDX12

Вообще DX9 <> DX10 <> DX11 <> DX12 - они могут ломатся..

zub писал(а):Вроде как если у родителя выставлен WS_CLIPCHILDREN оно не должно отрываться на детках.

я сделал без него..
ElectroGuard
новенький
Сообщения: 71
Зарегистрирован: 03.06.2016 11:10:22

Сообщение ElectroGuard »

Код: Выделить всё

procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
procedure TControl.WMEraseBkgnd(var Message: TWmEraseBkgnd);
begin
  Message.Result := 1;
end;

?
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

WMEraseBkgnd не спасает от мерцания.. в итоге виден GUI фон элементов.
не.. там идет собственный TWinProc и перекрытие LM_PAINT.

Добавлено спустя 3 минуты 1 секунду:
Пока "завис" - думаю отказатся от TFPImage использовать AggPas.

Добавлено спустя 1 минуту 52 секунды:
Нет работы с градиентами, TTypeFree непонятно как работает.
Ответить