Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# OnPaint pomoc

[es] :: .NET :: .NET Desktop razvoj :: C# OnPaint pomoc

[ Pregleda: 1619 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

TATATA
Nezaposlen
Čačak

Član broj: 309279
Poruke: 16



Profil

icon C# OnPaint pomoc04.11.2013. u 15:57 - pre 82 meseci
Ekran forme je podeljen na dva pravougaonika(oblasti), s' tim sto prvi zauzima 2/3 ekrana, a drugi 1/3. Npr:
Code:

 this.ClientSize = new System.Drawing.Size(842, 498);
 this.Name = "Form1";
 this.ResumeLayout(false);


protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
         

            SolidBrush brush = new SolidBrush(Color.Red);
            SolidBrush brush1 = new SolidBrush(Color.Green);

            Rectangle rect = new Rectangle(0, 0, Width, 20);
            Rectangle rect1 = new Rectangle(0, 20, Width, 10);
           

            e.Graphics.FillRectangle(brush, rect);
            e.Graphics.FillRectangle(brush1, rect1);
          
    }

Cilj je, da ukoliko uradim resize prozora(recimo uvecam), ti pravougaonici automatski iscrtaju u novim dimenzijama, pri cemu ce opet zauzimati 2/3(1/3) prozora.
Pokusao sam sa Invalidate(), dobijem to sto hocu, ali ekran blinka.
Na koji nacin mogu to da uradim?
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
95.180.61.*



+395 Profil

icon Re: C# OnPaint pomoc04.11.2013. u 17:48 - pre 82 meseci
Ako pozivas Invalidate u Resizing eventu onda ti se i desava da ti prozor blinka zato se resizing event se ispaljuje na svaki pixel pomeraja.
Bolje je da pozivas Invalidate na Resized event jer ce se on ispaliti samo jednom - kada se resize zavrsi .

Druga solucija je da pozivas u resizing eventu overload Invalidate metode koja prihvata kao parametar rectangle a to je ona povrsina koja se zapravo promenila u resizu, koju opet moras da izracunas , tako da ces time eliminisati blinkanje ali nekad ni to nije bas moguce u potpunosti zavisi od slucaja.

Cini mi se da imas property nad formom DoubleBuffered koja sprecava blinkanje tj . repaint cele povrsine tako da ti ova druga solucija mozda i ne treba.





Viva lollapalooza
 
Odgovor na temu

TATATA
Nezaposlen
Čačak

Član broj: 309279
Poruke: 16



Profil

icon Re: C# OnPaint pomoc05.11.2013. u 08:08 - pre 82 meseci
Mozes li mi dati primer, nisam siguran da sam te najbolje razumeo. Obzirom da sam nov u GUI-u, znacila bi mi svaka pomoc.
Hvala unapred
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# OnPaint pomoc

[ Pregleda: 1619 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.