Forum » Programiranje » [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.
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?
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.
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
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 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] ukaz radirkaOddelek: Programiranje | 1120 (913) | japol |
» | [c#] picturebox, slika na slikoOddelek: Programiranje | 1089 (899) | japol |
» | [C#]Analogna uraOddelek: Programiranje | 2749 (2386) | cekr |
» | [c#]4 v vrsto - padanje krogovOddelek: Programiranje | 1996 (1828) | VASkO |
» | [c#] enostavna Igrca -> poraba procesorja 95%Oddelek: Programiranje | 2167 (1531) | elKaktus |