Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C#] - .invalidate jednego panelu - miga tez panel który jest pod nim

17 Mar 2016 21:11 420 4
  • #1 17 Mar 2016 21:11
    2675900
    Użytkownik usunął konto  
  • Pomocny post
    #2 17 Mar 2016 21:17
    marcinj12
    Poziom 40  

    Na pewno nie zaszkodzi ustawienie w formie DoubleBuffered na True.
    Wykresowi można ustawić obrazek-tło przez właściwość BackImage - wykorzystujesz ją? ChartAreas ma z kolei BackColor, które można z kolei ustawić na Transparent.
    Natomiast pytanie zasadnicze - po co przerysowywać wykres? On się samo powinien odświeżać. Wklej kod, a najlepiej przykładowy projekt, bo może coś źle robisz.

    0
  • #3 17 Mar 2016 22:08
    2675900
    Użytkownik usunął konto  
  • Pomocny post
    #4 18 Mar 2016 00:50
    marcinj12
    Poziom 40  

    Widzę, że zacząłeś coś próbować z DoubleBuffer dla panela - słuszna droga, choć z wykonaniem gorzej ;)
    Doklej po InitializeComponents() takie coś:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    i zasadniczo to powinno pomóc na "miganie".
    Ale: zdaje się, że źle podszedłeś do tematu....
    W pierwszym kroku - przyglądałeś się gotowej kontrolce Chart? Ma mnóstwo konfigurowalnych opcji i jest dosyć intuicyjna, myślę, że mógłbyś ją dostosować pod swoje potrzeby. Zawsze lepiej użyć gotowego komponentu niż samemu coś tworzyć.

    W drugim kroku - po co dwa panele? Można rysować wszystko na jednym... W pierwszym kroku możesz wyrysować na nim bitmapę - nawet tak jak masz w tej chwili - a w drugim - rysować wykres. Możesz też zrezygnować z bitmapy i rysować wszystko w jednym zdarzeniu panel_Paint.

    Wyrzuć też wszystkie deklaracje Pen ze zdarzenia na górę klasy, pod te zmienne (których nie musisz deklarować jak static).
    Poniżej masz taki lekko poprawiony kod, rysujący wszystko w jednym zdarzeniu na jednym panelu:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • #5 18 Mar 2016 01:14
    2675900
    Użytkownik usunął konto