» »

[c#] utripanje pri izrisovanje

[c#] utripanje pri izrisovanje

losnah ::

Imam probleme pri izrisovanju. Tm ko so tri pikice je še koda za risanje pikic in črt.
Ker je pikc in črt velik, se vid kako se "počasi" izrisujejo na zaslon. Ker pa tega nism hotu vidt sm se odloču narest buffer kamor bom risal črte, pike..., in ko bi končal, bi vse naenkrat izrisal na zaslon.
Zdej sem to naredu in ne vidm izrisovanja vsake črte posebi.:D
Zdej pa utripne cela površina kamor izrišem.:(

Jes ne bi rad vidu nobenga utripanja. Kako to nardim?
A sm sploh prov napisol kodo?
A sm se sploh prov odloču za tak pristop?

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
  //buffer
  Bitmap memBmp = new Bitmap(Form1.ActiveForm.Width, Form1.ActiveForm.Height);
  
  Graphics graphics = Graphics.FromImage(memBmp);
  SolidBrush brush = new SolidBrush(Color.Blue); //brush
  graphics.FillPie(brush, rect, -90, angle); //narisi pito
  graphics.DrawImage(plane1.getBitMap(), point);
                                    .
                                    .
                                    .
  //izrisi na zaslon
  e.Graphics.DrawImage(memBmp, new Rectangle(0,0, Form1.ActiveForm.Width,
                      Form1.ActiveForm.Height), 0, 0, Form1.ActiveForm.Width, 
                      Form1.ActiveForm.Height, GraphicsUnit.Pixel);
}

zerox ::

Glede na to, da rišeš na formo bi po mojem lahko naredil tudi tako (pri tem ni potrebno risanje v buffer).
this.SetStyle(
ControlStyles.AllPaintingInWmPaint |
ControlStyles.UserPaint |
ControlStyles.DoubleBuffer,true);

nekje pri inicializaciji.

Drugače pa bom doma pogledal(če se bom spomnil :)), ker sem pred časom delal nekaj podobnega v c# .. le da sem risal na panel in mi je kljub double bufferingu na koncu tudi utripnilo. Stvar sem popravil tako, da sem moral napisati svoj pannel class (oz podedoval panel in potem neko funkcijo predefiniral).

p.s. Glede na to, da ob vsakem paint znova ustvarjaš Bitmap.. bi predlagal, da ga ustvariš samo 1x oz ga znova ustvariš, ko spreminjaš velikost okna....samo malo da najdem kak example na netu ...
naredi npr. tako
Double buffer

lp

Zgodovina sprememb…

  • spremenil: zerox ()

losnah ::

Cool:)) Dela. Hvala.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] ukaz radirka

Oddelek: Programiranje
91120 (913) japol
»

[c#] picturebox, slika na sliko

Oddelek: Programiranje
151089 (899) japol
»

[C#]Analogna ura

Oddelek: Programiranje
152749 (2386) cekr
»

[c#]4 v vrsto - padanje krogov

Oddelek: Programiranje
81996 (1828) VASkO
»

[c#] enostavna Igrca -> poraba procesorja 95%

Oddelek: Programiranje
192167 (1531) elKaktus

Več podobnih tem