Rysowanie do "pamieci" ?

0

Witam .
Mam aplikację generującą punkty na płaszczyźnie i potem wyświetlającą te punkty na panelu. Problem tkwi w tym że tych punktów może być kilka tysięcy i wówczas każde odmalowanie panelu trwa kilka sekund :/ Punkty rysuję prymitywnie ;) w ten sposób:
grafika1.DrawEllipse(pen2, p.x, p.y, 1, 1);
gdzie:
grafika1 = panel1.CreateGraphics();
W jaki sposób "rysować do pamięci" a potem wyświetlić już gotową bitmapę ?, a może jest prostsze rozwiązanie?
Jestem zielony i proszę o kawałek kodu.

0

dokładnie tak jak piszesz - tworzysz jeden obrazek w pamięci, rysujesz na nim, a potem zawartość kopiujesz do drugiej bitmapy. poszukaj trochę w helpie i dojdziesz sam do wszystkiego.

0

no już siedzę nad tym parę godzin... projekt powinienem był już wysłać ;D
Przed sesją każda godzina cenna :]

0

doszedłem wiec do takiego kodu, który niestety nic nie wyświetla, panel1 jest biały ...
deklaruje:

        Graphics grafika1,grafa;
        Bitmap bitmapa;
        ...

inicjalizuje:

        private void Generator_Load(object sender, EventArgs e)
        {
            bitmapa = new Bitmap(panel1.Width,panel1.Height);
            grafa = Graphics.FromImage(bitmapa);
            grafika1 = panel1.CreateGraphics();
            ...
        }

próbuje rysować:
private void panel1_Paint(object sender, PaintEventArgs e)
{
...
grafa.DrawEllipse(pen3, elp.a.x, elp.a.y, elp.szer, elp.wys);
...
grafika1 = Graphics.FromImage(bitmapa);
}
po kliknieciu na jakiś button odrysowuje:

       panel1.Invalidate();
       //panel1.Refresh(); 

Niestety bez rezultatów ... Co robię źle ?

0

zaczęło działać, choć nadal widać lekkie mruganie.

w kodzie zmieniłem:

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            ...
            grafa.DrawEllipse(pen3, elp.a.x, elp.a.y, elp.szer, elp.wys);
            ...
            grafika1.DrawImage(bitmapa,0,0); 

zamiast grafika1 = Graphics.FromImage(bitmapa);
}

0

Jak ktoś miałby podobny problem to polecam http://www.codeguru.pl/article-print-160.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1