Nie znam się zbytnio na komputerowej (tzn z poziomu kodu) obróbce grafiki. Mam pytanie: mój program nieco "mrugał" (Jest odświażany 5 razy na sekundę) więc postanowiłem użyć bitmapy. Niestety jest jeszcze gorzej (Przepraszem za enigmatyczny wstęp, ale już dwa razy pisałem obszerniejszy, i dwa razy firefox mi się zacinał...)
Otóż było:
Graphics g = e.Graphics;
Pen pioro = new Pen(Color.Black);
g.DrawImage(Obrazek, X, Y;
g.DrawLine(pioro, 0, 500, 1280, 500);
(W rzeczywistym programie wygląda to nieco inaczej, ale tak będzie czytelniej a sens taki sam)
Teraz jest:
w public Form1():
Bitmap bitmap = new Bitmap(this.Size.Width, this.Size.Height);
i w Form1.Paint():
Graphics ImageGraphics = Graphics.FromImage(bitmap);
Graphics g = e.Graphics;
Pen pioro = new Pen(Color.Black);
ImageGraphics.Clear(Color.White);
ImageGraphics.DrawImage(Obrazek, X, Y);
ImageGraphics.DrawLine(pioro, 0, 500, 1280, 500);
g.DrawImage(bitmap, 0, 0);
Zacina się niemiłosiernie.
Próbowałem (Dla testów jeno) zamienić ostatnią linijkę na "g.DrawImage(Obrazek, X, Y);" - i potwierdziło się to, co podejrzewałem - program działał płynnie i bez zawieszeń (jedynie z tym lekkim mruganiem co na początku), czyli nie owe nowe linijki go zwalniały, tylko samo rysowanie bitmapy. Ma ktoś pomysł co z tym zrobić?
PS. Możliwe że część winy ponosi to, że do każdorazowego odświeżania obrazu używam Refresh(), ale kiedy próbowałem go zamienić na this.Form1_Paint(this, null) wyskakiwały błędy (podczas debugowania, program się uruchamiał).