[Delphi] animace z ImageList

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod dyžon 18. 5. 2018 11:40

Zdravím,
vím, že spousta z vás moc nesouhlasí s grafikou v programech, ale třeba mi poradíte.
hraju si s designem jedné malé applikace a potřeboval bych v TImage vyměnit za krátkou dobu několik obrázků z TImageListu a tím vytvořit jakousi jednoduchou animaci.
obrázky jsou 110 x 110 px ve formátu .bmp
nastaveni ImageListu:
Kód: Vybrat vše
  object ImageList1: TImageList
    BkColor = clBlack
    Height = 110
    ShareImages = True
    Width = 110
    Left = 832
    Top = 104

TTimer.Interval:= 25;
Kód: Vybrat vše
procedure TF_Kniha_Main.Timer_UlozTimer(Sender: TObject);
begin
  inc(o);
  I_Uloz.Picture.Bitmap:= nil;
  ImageList1.GetBitmap(o, I_Uloz.Picture.Bitmap);
  if o = 11 then Timer_Uloz.Interval:= 350;
  if o = 12 then begin
//    I_Uloz.Picture.Bitmap:= nil;
    ImageList1.GetBitmap(0, I_Uloz.Picture.Bitmap);
    Timer_Uloz.Interval:= 25;
    Timer_Uloz.Enabled:= False;
    L_Uloz.Font.Color:= clGray;
    L_Uloz.Caption:= 'ULOŽENO';
  end;
end;

když před každzm načtení novyho obrázku neprovedu I_Uloz.Picture.Bitmap:= nil;, tak se nenmění
a stím to zase občas problikává.
myslím, že jsem četl o komponentě, do které se dají načíst všechny obrázky a nastavit interval obměny, ale nemůžu si vzpomenout kde a jak se jmenovala.
s TAnimation se mi nedaří načíst .avi ... a to ani v RealTime, ani z Resource.
máte prosím někdo nějakej nápad ??

no a ještě jedna věc:
chtěl bych změnit byrvu označenýho textu, zkusil jsem to pomocí SetSystemColor, což funguje parádně, ale mění to barvy pro celej system, to znamená i v jiných programech ... dá se něco podobnýho udělat jen pro můj program ??

díky za každej nápad ...
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod Stoura 1 18. 5. 2018 15:01

Pisu sice v C++ builderu, ale mozna by to fungovalo i v delphi:

Kdyz potrebuji animovat, tak si obrazek pripravim do bitmapy a potom tu bitmapu nakreslim pomoci funkce Draw() do canvasu komponenty paintbox, ktery pouzivam pro zobrazovani.
Delam takhle "zive" rucickove merici pristroje.
Stoura 1
Junior
Uživatelský avatar

Odeslat příspěvekod dyžon 19. 5. 2018 06:55

díky za nápad, zdá se, že to funguje suprově ...
zkoušel jsem i GIF, taky možnost, jen je potřeba nastavit pouze jedno projetí ..
Kód: Vybrat vše
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
  for I := 0 to 13 do begin
    ImageList1.Draw(PaintBox1.Canvas, 0, 0, i, True);
    Delay(25);
  end;
end;
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod Stoura 1 19. 5. 2018 08:08

Jeste ke zmene vlastnosti fontu:

Zkuste se podivat sem:
http://www.swissdelphicenter.ch/en/showcode.php?id=1972

Nezkousel jsem to, ale princip je asi spravne.
Je tam rekurzivni funkce, ktera prosmejdi vsechno od zadane komponenty dolu a predela pouzity font.
Budete si to ale muset zmodifikovat tak, aby to nemenilo pouzity font, ale jeho barvu.
Stoura 1
Junior
Uživatelský avatar

Odeslat příspěvekod dyžon 1. 6. 2018 07:41

díky, ale tohle není úplně to co potřebuju ...
už jsem to vzdal ....
prošel jsem net a pro Delphi nic takovýho, jako nastavit vlastní barvy focusTextu není ...
dájí se změnit barvy celýho systému, ale ne jen pro mou aplikaci ...
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků