Norbert M.

Norbert M. Nobody's perfect.
Call me Nobody ;)

Temat: Rysowanie kontrolek

Chciałbym podyskutować trochę o sposobie prezentowania danych i wydajności rysowanie kontrolek (na Windows.Fomsach, nie w WPF). W jaki sposób prezentujecie dane na formatce (ograniczmy się do TextBox’ów jako pól prezentujących wartości i Label’ów dane te prezentujące). Załóżmy, że mam do zaprezentowania na formatce dane faktury. Kilka problemów:
1. Jak układacie kontrolki? Tak, żeby było w miarę ładnie. Wiadomo, że dane muszą być grupowane logicznie, jeżeli jest ich dużo zajmują kilka wierszy. Fajnie, jeśli są ułożone równo (w kolumnach), ale problem jest, jeżeli szerokości TextBox’ów są różne. Oczywiście można wszystko ładnie ułożyć dla jednego rozmiaru okna, no ale wiadomo, że najlepiej by było, gdyby aplikacja była wizualnie elastyczna (dobra dla kilku ustawień rozdzielczości). Oczywiście można którąś z kontrolek w wierszu rozciągać w zależności od szerokości forma (tak, żeby dostosować się do obu krawędzi formatki), ale to też jest średnio ładne, najlepiej by było, żeby rozciągały się proporcjonalnie. Ja używam w tym celu TableLayoutPanelów, ale nie jest to rozwiązanie kiepskie, ze względu na sztywną liczbę kolumn. Np.: ( w pierwszym wierszu mam nazwę firmy na całej długości (1 kolumna), w drugim adres( ulicę, dom, lokal – 3kolumny), a w trzecim miasto i kod (2 kolumny) – dla każdego wiersza musiałbym użyć nowego TableLayoutPanel’a. W jaki sposób Wy radzicie sobie z takimi sytuacjami??
2. Często przy dużej ilości kontrolek mam problemy z ich sprawnym odrysowywaniem. Jeżeli pokazuje sobie formatkę zawsze chwilę twa zanim odrysuje ona wszystkie swoje elementy, czemu towarzyszy miganie, dostosowywanie rozmiarów, znikanie obiektów itp. Jeżeli dodam w trakcie inicjalizacji ładowanie danych proces jeszcze spowalnia. A gwoździem do trumny jest stosowanie kontrolek, które rysują w GDI+. Podwójne buforowanie formatki, nie za wiele daje. Czy znacie jakiś sposób, żeby przyśpieszyć proces odrysowywania i żeby nie trwał on na oczach usera??
Będę wdzięczny za wszelki sugestie i linki do artykułów na ten temat.

konto usunięte

Temat: Rysowanie kontrolek

Zbyt wiele z GDI+ się nie da wyciągnąć. Tylko z włączonym Areo jest wspomaganie sprzętowe. W pozostałych trybach jest rendering jest bez użycia karty graficznej.
Marcin Pigłowski

Marcin Pigłowski Specjalista ds. baz
danych

Temat: Rysowanie kontrolek

Ja używam TabelPanelLayout + FlowLayout + Splitter + GroupBox + Właściwości dock i anchor. Oczywiście layouty szczególnie TabelPanelLayout są w sobie zagnieżdżone. Pierwszy problem to zmiana rozmiarów okna, przy dużej ilości elementów cieżko to wszystko zgrać. Drugi problem to zmiana visible już podczas działania aplikacji (szczególnie dla kilku kontrolek naraz) pomaga trochę SuspendLayout i ResumeLayout choć co ciekawe to pomimo użycia tych metod kontrolki pojawiały się ratami.
Do głównych okien można stosować DockManagery. Raz użyłem było chyba 5 czy 6 zakładek i jak dynamicznie miały reagować wszystkie na raz (przeładowania danych, zwijanie/rozwijanie) to niestety animacja zwijania/rozwijania się haczyła nie mówiąc o tym, że jedno mogło odświeżać inne i trzeba było dynamicznie odłączać i podłączać zdarzenia.
Ogólnie im mniej sztywny wygląd tym więcej zabawy i więcej potrzeba zasobów kompa, niestety.

Następna dyskusja:

problem z listą kontrolek




Wyślij zaproszenie do