TPanel a autorepaint

Autor Téma: TPanel a autorepaint  (Přečteno 202 krát)

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 115
  • Karma: 0
TPanel a autorepaint
« kdy: 25-04-2018, 07:52:27 »
Zdravím,

neřešil někdo autorepaint TPanel komponenty? Kreslím na canvas TPanelu, ale když přes panel přetáhnu jiné okno, vše zmizí. Nenapadá někoho, jak tuto událost zaznamenat a vynutit překreslení? Tak funguje například TImage.

Děkuji za případné nápady.

Offline vandrovnik

  • Hrdina
  • ****
  • Příspěvků: 447
  • Karma: 36
    • Verze Delphi: 10.2
Re:TPanel a autorepaint
« Odpověď #1 kdy: 25-04-2018, 11:39:22 »
A nebylo by lepší tedy použít tPaintBox?

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 115
  • Karma: 0
Re:TPanel a autorepaint
« Odpověď #2 kdy: 25-04-2018, 12:02:20 »
TPaintBox není vhodné řešení (není TWinControl). Na TPanel kreslím pomocí OpenGL. Řešením by mohl být potomek s odchytáváním WMPaint. Ale to mi trochu boří původní plány.

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 775
  • Karma: 55
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:TPanel a autorepaint
« Odpověď #3 kdy: 25-04-2018, 12:10:34 »
Excellent
Rated 1 time
Na TPanel se kreslí zásadně a jenom pomocí TPanel.Paint.
Embarcadero Technology Partner, juj. Člen Lazarus týmu, oj.

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1061
  • Karma: 52
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:TPanel a autorepaint
« Odpověď #4 kdy: 25-04-2018, 14:00:46 »
TPaintBox není vhodné řešení (není TWinControl). Na TPanel kreslím pomocí OpenGL.

Ty pouzivas nejake zapouzdreni OpenGL kteremu predavas HWND a ono za Tebe kresli? Nebo jakym zpusobem kreslis? Jak uz psal Ondrej, kreslit bys mel v pretizene metode Paint. A pokus nepotrebujes aby ten renderer byl kontejnerem, muzes si jednoduse vytvorit vlastni vizualni komponentu odvozenou napr. z TCustomControl kde si metodu Paint pretizis a budes v ni kreslit (prace na par minut).
« Poslední změna: 25-04-2018, 14:04:05 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 115
  • Karma: 0
Re:TPanel a autorepaint
« Odpověď #5 kdy: 26-04-2018, 11:56:15 »
Ano, OpenGL řeším tak jak píšete. Pokud vím, tak Paint není ani v D10 a vytvoření potomka mi trochu komplikuje způsob, jakým inicializuji OpenGL. Ještě mě napadlo použít TScreen a některý z eventů jako OnActiveFormChange a pak jednoduše vynutit překreslení panelů při re-aktivaci formuláře.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: