Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2008, 12:01   #1
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию Как избавиться от мерцания при передвижении Timages.

Здравствуйте. Пишу программу для скачивания файлов с Интернета само собой необходимо отображать скорость скачивания файлов и я сделал график подобный как у DM. Всё бы нечего но он дрожит т.к. состоит из множества картинок у которых в зависимости от скорости скачивания меняется Height.
Подскажите как убрать мерцание или как можно сделать график по-другому вот код.


PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsExtCtrlsImagingComponentsComCtrlspngextrapngimageStdCtrls;

type
  TForm1 
= class(TForm)
    
Timer1TTimer;
    
TrackBar1TTrackBar;
    
Image1TImage;
    
PNGButton1TPNGButton;
    
Label1TLabel;
    
procedure Timer1Timer(SenderTObject);
    
procedure FormCreate(SenderTObject);
    
procedure TrackBar1Change(SenderTObject);
  private
    { Private 
declarations }
   
// Labels : array of TImage;
    
Labels : array [0..100of TImage;
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;
    
x,t,i:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(SenderTObject);

begin
      
for := 0 to 100 do begin
       Labels
[i]:=TImage.Create(Self);
       
with Labels[i] do begin
           parent
:=Self;
           
Tag:=5;
           
Picture.LoadFromFile('c:\3.bmp');
           
Left:=Image1.Left+i;
           
top:=Image1.Top;
           
Height:=0;
           
Font.Color:=clGray;
       
end;
      
end;
end;

procedure TForm1.Timer1Timer(SenderTObject);
begin
   i
:=100;
   
Labels[0].Height:=35+Random(8);
   
Labels[0].Visible:=false;
   while 
do begin
         Labels
[i].Height:=Labels[i-1].Height;
         
Labels[i].top:=Image1.Top+(42-Labels[i].Height);
         
i:=i-1;
       
end;
end
Изображения
Тип файла: jpg 1.jpg (29.8 Кб, 144 просмотров)

Последний раз редактировалось jocry; 05.10.2008 в 12:49.
jocry вне форума Ответить с цитированием
Старый 05.10.2008, 12:53   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Попробуйте установить в FormCreate
Form1.DoubleBuffered:=true;
_Dmitry вне форума Ответить с цитированием
Старый 05.10.2008, 13:43   #3
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Попробуйте установить в FormCreate
Form1.DoubleBuffered:=true;
Абсолютно нечего не изменилось
jocry вне форума Ответить с цитированием
Старый 05.10.2008, 16:45   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Тогда выкладывайте всю программу для тестирования
_Dmitry вне форума Ответить с цитированием
Старый 05.10.2008, 17:51   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Цитата:
Подскажите как убрать мерцание или как можно сделать график по-другому
Кинуть на форму 1 Image и рисовать на его канве. Мерцаний быть не должно.
Sibedir вне форума Ответить с цитированием
Старый 06.10.2008, 08:15   #6
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию

Вот исходный код программы
Вложения
Тип файла: rar статус.rar (8.7 Кб, 28 просмотров)
jocry вне форума Ответить с цитированием
Старый 06.10.2008, 08:30   #7
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered:=true;
for I := 0 to 100 do begin
Labels[i]:=TImage.Create(Self);
with Labels[i] do begin
parent:=Self;
Name:='t'+IntToStr(i);
Tag:=5;
Picture.LoadFromFile(extractfilepat h(application.ExeName)+'\3.bmp');
Left:=Image1.Left+i;
top:=Image1.Top;
Height:=0;
end;
end;
end;
После установки двойной буферизации у меня никакого мерцания не наблюдается.
_Dmitry вне форума Ответить с цитированием
Старый 06.10.2008, 10:33   #8
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию

Чудеса мерцание исчезли, спасибо тебе _Dmitry, но когда вставляю в главный проект опять начинает мигать.

Последний раз редактировалось jocry; 06.10.2008 в 10:43.
jocry вне форума Ответить с цитированием
Старый 06.10.2008, 12:12   #9
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию

Я понял, почему график дрожит, из-за компонента «альфа скин» (askin). Тогда может кто-нибудь помочь, чтоб можно было и компонент и график использовать одновременно.
Есть у кого-нибудь другие предложения как рисовать график.

Последний раз редактировалось jocry; 06.10.2008 в 12:14.
jocry вне форума Ответить с цитированием
Старый 07.10.2008, 11:39   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Может так, безовсяких BMP
Вложения
Тип файла: zip График-трафик.zip (201.0 Кб, 23 просмотров)
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При вставке 20-значного числа в ячейку происходит округление. Как избавиться? urri_k Microsoft Office Excel 9 25.07.2008 23:10
как избавиться от 2.26188E+19?? banker Microsoft Office Excel 11 12.12.2007 09:35
Как избавиться от многоточия в TsListView dimfil Компоненты Delphi 5 03.12.2007 09:57
Как избавиться от QTINTF70.DLL ? Aslan Общие вопросы Delphi 19 24.10.2007 16:53
как избавиться от закладки ЧИЖ Общие вопросы Delphi 3 24.06.2007 00:05