Tertium |
Отправлено: 26.03.2004, 11:44 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
Народ!! Помогите избавиться от постоянного мерцания контролов типа TGraphicControl при изменении размера или перемещении по форме!!! Канвас его — это, как я понимаю, в конечном счёте часть hdc окна-парента. Соответственно всегда приходит полностью инвалидный клипрект, и контрол мигает как бешенный. Через винапи, конечно, бороться с этим не получается. Поставив у парента DoubleBuffered в true, я тоже ничего не добился. Скажите, вообще возможно избавиться от этого мигания, не прибегая к DirectDraw ?
|
|
olegenty |
Отправлено: 26.03.2004, 12:30 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Лентяй. Всё в документации есть.
сделай следующее:
ТвойКонтрол->ControlStyle << csOpaque;
это касается всех контролов вообще.
|
|
Tertium |
Отправлено: 26.03.2004, 12:38 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
так хрен же собачий Мигает!
|
|
klen |
Отправлено: 26.03.2004, 12:59 |
|
Машинист паровоза
Группа: Участник
Сообщений: 239
|
Раскажи как у тебя TGraphicsControl появляется на родителе, динамически или нет. Непонятно. Потомучто если в дизайнере на форму кинуть TImage или создать динамически, то при перерисовке все моргает, а если Parent->DoubleBuffered=true то все ок.
CODE |
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TImage* a = new TImage (this);
a -> Picture -> LoadFromFile ("e:\flybywire.jpg");
a -> Parent = this;
a -> Align = alClient;
DoubleBuffered = true; // перестает моргать
}
| |
|
olegenty |
Отправлено: 26.03.2004, 13:28 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
я не прав, у Parent измени это св-во.
т.е.
CODE |
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->ControlStyle << csOpaque;
TImage* a = new TImage (this);
a -> Picture -> LoadFromFile ("e:\flybywire.jpg");
a -> Parent = this;
a -> Align = alClient;
}
|
всё должно заработать пучком
|
|
olegenty |
Отправлено: 26.03.2004, 13:32 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
я не прав, у Parent измени это св-во.
т.е.
CODE |
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->ControlStyle << csOpaque;
TImage* a = new TImage (this);
a -> Picture -> LoadFromFile ("e:\flybywire.jpg");
a -> Parent = this;
a -> Align = alClient;
}
|
всё должно заработать пучком
|
|
Tertium |
Отправлено: 28.03.2004, 15:19 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
ок
Отредактировано Tertium — 28/03/2004, 16:25
|
|
Tertium |
Отправлено: 28.03.2004, 15:22 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
Во что помогло:
У парента в конструкторе:
CODE |
ControlStyle<<csOpaque;
DoubleBuffered=true;
|
Руль. Спасибо за советы!!!
Отредактировано Tertium — 28/03/2004, 16:25
|
|