Autor Téma: jak vytvořit průhledný obrázek v Delphi?  (Přečteno 604 krát)

Online Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3183
  • Karma: 111
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:jak vytvořit průhledný obrázek v Delphi?
« Odpověď #15 kdy: 14-11-2022, 17:12:43 »
O co se vlastně snažím...chci udělat animaci změny Caption u nějakého prvku, kde je pod textem gradient. Proto se snažím si ten text vyrenderovat do nějaké průhledné bitmapy, abych pak mohl v té animaci s tím různě hýbat. Škoda, že DrawText() neumí kreslit jakoby do Viewportu, pak bych mohl hýbat jen s tím Viewportem.

Opet pripominam Skia4Delphi
Embarcadero MVP - Czech republic

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 377
  • Karma: 12
    • Verze Delphi: D5, XE2, 10.4.2, D11
Re:jak vytvořit průhledný obrázek v Delphi?
« Odpověď #16 kdy: 14-11-2022, 21:26:05 »
vandrovnik: bohužel se nejedná o kreslení přímo na obrazovku, potřebuji si vykreslit jenom samotný text do bitmapy (resp. Png), abych ho pak mohl relativně snadno animovat na standardní GDI Canvas vizuální komponenty. Animuji nějaký Caption a chci například, aby nový Caption vyšoupnul ten původní třeba shora dolů, nebo zleva doprava, to je jedno. Jelikož jsem nepřišel na žádný způsob, jak k tomu využít standardní windowsáckou api funkci DrawText(), tak to řeším takhle.

Radek Červinka: Skia je úchvatná, ale na legacy vcl věci to afaik moc není, leda tak začít úplně od znova. V tomhle případě například odvozuji novou komponentu od TCategoryPanel (udělal jsem z něj standalone panel, který umí Expand a Collapse, což je pro GUI celkem užitečná fíčurka).
nil

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 377
  • Karma: 12
    • Verze Delphi: D5, XE2, 10.4.2, D11
Re:jak vytvořit průhledný obrázek v Delphi?
« Odpověď #17 kdy: 16-11-2022, 00:24:01 »
Jo tak další megaopruz s GDI+ bude vykreslení tabstopů (09h). V GDI+ se totiž musí nastavit pozice každého tabstopu zvlášť a relativně k předchozímu. Je to asi prima na vykreslování tabulek, ale naprosto na zabití pro vykreslení tabu v normálním textu. Takže to vidím na rozsekání stringu podle tabstopů, změření velikosti pro vykreslení, dopočítání pozic tabstopů, nastavení StringFormat.SetTabStops a pak teprve vlastní vykreslení stringu.
nil