C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
мигание TGraphicControl, ???
Tertium
  Отправлено: 26.03.2004, 11:44


Машинист паровоза

Группа: Почетный участник
Сообщений: 192



Народ!! Помогите избавиться от постоянного мерцания контролов типа TGraphicControl при изменении размера или перемещении по форме!!! Канвас его — это, как я понимаю, в конечном счёте часть hdc окна-парента. Соответственно всегда приходит полностью инвалидный клипрект, и контрол мигает как бешенный. Через винапи, конечно, бороться с этим не получается. Поставив у парента DoubleBuffered в true, я тоже ничего не добился. Скажите, вообще возможно избавиться от этого мигания, не прибегая к DirectDraw smile.gif?
olegenty
Отправлено: 26.03.2004, 12:30


Ветеран

Группа: Модератор
Сообщений: 2412



Лентяй. Всё в документации есть.

сделай следующее:
ТвойКонтрол->ControlStyle << csOpaque;

это касается всех контролов вообще.
Tertium
Отправлено: 26.03.2004, 12:38


Машинист паровоза

Группа: Почетный участник
Сообщений: 192



так хрен же собачий smile.gif Мигает!
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

Вернуться в Вопросы программирования в C++Builder