Timerrel megoldott képmozgatás lassú
2011-11-11T19:47:39+01:00
2011-11-11T20:23:20+01:00
2022-08-04T23:25:30+02:00
csongi30
A program most annyiból áll h egy picturebox követi a kurzort. Nos a timer ezredmásodpercenként fut. Ehhez képest nagyon lassú a pb mozgása, ráadásul villódzik is. :S Mitől van ez? Egy 600x900 as ablakban van, és van háttér is, ettől lassúl hatott be szerintem, de a háttér mindössze 30 kb. Valami megoldásotok van? Ez a kód:

public Form1() { InitializeComponent(); Cursor.Dispose(); timer1.Interval = 1; timer1.Enabled = true; timer1.Start(); } private void Form1_Load(object sender, EventArgs e) { Graphics g; BackgroundImage = Image.FromFile("hatter.jpg"); g = Graphics.FromImage(BackgroundImage); } private void timer1_Tick(object sender, EventArgs e) { korong.Location = Cursor.Position; if (uto.Location.Y<=korong.Location.Y) { if (uto.Location.X<=korong.Location.X) { uto.Location = new Point(uto.Location.X+10,uto.Location.Y); } uto.Location = new Point(uto.Location.X,uto.Location.Y+10); } if (uto.Location.Y >= korong.Location.Y) { if (uto.Location.X >= korong.Location.X) { uto.Location = new Point(uto.Location.X - 10, uto.Location.Y); } uto.Location = new Point(uto.Location.X, uto.Location.Y - 10); }

Remélem van valami megoldásotok amivel rendes tempóra gyorsíthatom , ill. a villódzást megfékezhetem. Köszönöm előre.
Mutasd a teljes hozzászólást!
Üdv!

A barátod a double buffer lesz villódzás ügyben.

Egyébként az ilyen kódrészleteket:
uto.Location = new Point(uto.Location.X - 10, uto.Location.Y);

érdemes volna ezzel cserélni:
uto.Location.X = uto.Location.X - 10;

bár a legjobb megoldás talán az lenne, ha az elején kiszednéd egy változóba az X-et, majd azzal tennéd egyenlőve a Location.X-et.
Mutasd a teljes hozzászólást!

abcd