GDI+ i rysowanie w picturebox

Odpowiedz Nowy wątek
2006-07-17 12:03
0

witam,

mam problem z rysowaniem w picture box za pomocą GDI+, robie sobię funkcję ktora tworzy obiekt bitmapy i pobiera jego wielkosc z pictureboxa, a nastepnie rysuje po tej bitmapie i ustawiam ją jako IMAGE picture boxa. Jednak kiedy to zrobię razem ze zmianą tła na inny kolor, zauważyłem ze kolor tła zmienia się jak tylko w 75% czesci formy a dalem zeby picturebox byl "dock in the form" czy jakos tak, tzn wyglada ze jest rozciągniety na cała forme, i nie wiem dlaczego robi się mniejszy podczas rysowania?? prosze o pomoc kod wygląda tak:

 
Bitmap bmp;
Graphics gra;
 
bmp = new Bitmap(pictureBox1.Height, pictureBox1.Width);
gra = Graphics.FromImage(bmp);
gra.Clear(Color.Blue);
 
gra.DrawEllipse(Pens.White, x + 10, y - 50, 10, 10);
 
pictureBox1.Image = bmp;
pictureBox1.Invalidate();

Spony

Pozostało 580 znaków

2006-07-23 10:55
0
Bitmap bmp;
Graphics gra;
Graphics mainContext;

### glowna inicjalizacja
bmp = new Bitmap(pictureBox1.Height, pictureBox1.Width);
gra = Graphics.FromImage(bmp);
mainContext = pictureBox1.CreateGraphics();

### w metodzie odpowiedzialnej za malowanie:
gra.Clear(Color.Blue);
gra.DrawEllipse(Pens.White, x + 10, y - 50, 10, 10);
mainContext  = Graphics.FromImage(bmp);
pictureBox1.Refresh();

### w zdarzeniu resize:
mainContext = pictureBox1.CreateGraphics();
bmp = new Bitmap(pictureBox1.Height, pictureBox1.Width);
gra = Graphics.FromImage(bmp);

Takie rozwiazanie zastosowalem w swojej kontrolce wykresu i nawet migotania udalo sie w miare uniknac. Najwazniejsze bys pamietal ze wielkosc kontekstu musisz od nowa obliczac przy kazdej zmianie wielkosci formy, wzgledem ktorej dokuje. Inaczej wlasnie bedziesz mial czesc zamalowana, a czesc nie.


Senior Software Designer .NET

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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