Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с Image [D7, Win2k, WinXP]


Goast ©   (2005-11-09 14:28:00) 

Здравствуйте мастера!!!
Итак.. попробую объяснить…:) Есть форма….на форме компонент image растянутый на всю форму. Соответственно в image загружена цветастая картинка...:) Так же на форме расположено куча labеl!!!!картинку делаю прозрачной...image1.Transparent:=false и  как бы все становится красиво…но вот и сама проблема то….у меня эти label каждый 10 секунд обновляются. (меняют значения) и из за этого в момент изменения label картинка «мерцает» Как сделать так что бы она не мерцала…и вообще возможно ли это???? Спасибо!


Leonid Troyanovsky   (2005-11-09 16:19:00) [1]


> Goast   (09.11.05 14:28)  
> Здравствуйте мастера!!!
> Итак.. попробую объяснить…:) Есть форма….на форме компонент
> image растянутый на всю форму. Соответственно в image загружена
> цветастая картинка...:) Так же на форме расположено куча
...
> «мерцает» Как сделать так что бы она не мерцала…и вообще
> возможно ли это????


Кучу label убрать и рисовать прямо на форме (OnPaint).
Вот, например, как можно менять текст по таймеру

type
 TForm1 = class(TForm)
   Image1: TImage;
   Timer1: TTimer;
   procedure FormCreate(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure FormPaint(Sender: TObject);
 private
   { Private declarations }
   FText: String;
   FDisplay: TBitmap;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Image1.Hide;
 Brush.Style := bsClear;
 FDisplay := TBitmap.Create;
 FDisplay.Width := Image1.ClientWidth;
 FDisplay.Height:= Image1.ClientHeight;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 r: TRect;
begin
 FText := IntToStr(GetTickCount)+ #13#10+IntToStr(GetTickCount);
 r:= Image1.BoundsRect;
 InvalidateRect(Handle, @r, false );
end;

procedure TForm1.FormPaint(Sender: TObject);
var
 r: TRect;
begin
 FDisplay.Canvas.Draw(0, 0, image1.Picture.Bitmap);
 r:= Rect( Image1.Width div 2, Image1.Height div 2, Image1.width,
           Image1.Height );
 FDisplay.Canvas.Font := Font;
 FDisplay.Canvas.Font.Color := clYellow;
 SetBKMode(FDisplay.Canvas.Handle, TRANSPARENT);
 DrawText(FDisplay.Canvas.Handle, PChar(FText),
           Length(FText), r,
           DT_LEFT or DT_NOPREFIX);
 Canvas.Draw(0, 0, FDisplay);
end;


--
Regards, LVT.


Goast   (2005-11-09 14:48:00) [2]


> Amoeba ©   (09.11.05 14:34) [1]
> DoubleBuffered у формы установи в True в ее OnCreate.

пробовал не все равно мыргает....:(


Amoeba   (2005-11-09 14:34:00) [3]

DoubleBuffered у формы установи в True в ее OnCreate.


Наверх

Титульная страница Поиск, карта сайта Написать письмо