[ TATATA @ 04.11.2013. 15:57 ] @
| 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? |
[ deerbeer @ 04.11.2013. 17:48 ] @
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.
[ TATATA @ 05.11.2013. 08:08 ] @
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
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.