01. marts 2009 - 13:32Der er
12 kommentarer og 1 løsning
MouseMove event for langsom til at tegne
Hej.
Jeg har forsøgt at lave en lille Windows applikation, hvor man skal kunne tegne, ved at holde venstre museknap nede.
Det fungere sådan, så når MouseMove event køres (Når musen bevæges), så hvis venstre museknap holdes ned, så sættes der en enkel pixel på musens placering.
Men MouseMove event er alt for langsom, til at kunne registrere musens bevægelser. Dvs. at når man vil tegne, så bliver det ikke flydende linier, men istedet en masse prikker.
Meningen var sådan set, at man skulle kunne tegne, ligesom i Paint f.eks. Er der nogle, der har en løsning på mit problem?
Jeg ved ikke om du stadig følger med i spørgsmålet, men jeg fandt lige ud af, hvad "problemet" er, mht. min nuværende applikation.
Der tegnes ikke på selve formen, men derimod på en pictureBox. Efter at have rettet en hel del "this." til "pictureBox1." ( F.eks pictureBox1.Invalidate(); ) virker det stadig ikke.
Der bliver simpelthen ikke tegnet nået. Jeg håber derfor du lige stadig har fat om spørgsmålet, og kan hjælpe mig.
Der bliver ikke skrevet nogen fejlmeddelser, når jeg tester applikationen med F5. Men jeg har testet mig lidt frem, og ved at den nederste "protected override void onPaint(PaintEventArgs e)" ikke bliver kørt, hvilket må være grunden til, at der ingenting bliver skrevet.
Så fik jeg det sgu til at virke, efter at have rodet med det i noget tid.
Linien du sagde, jeg skulle prøve at tilføje, skulle alligevel vær der:
this.pictureBox1.Image = this.paintBitmap;
Og så skulle jeg også lige have denne:
paintBitmap = new Bitmap(pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height);
Grunden til at jeg skal have nederste med, er pga. af man har mulighed for at oprette "nye" sider man kan tegne på, og som standard har pictureBoxen 0 width og 0 height, hvilket du jo ikke kunne vide.
Jeg har så blot placeret begge linier ind, under når pictureBoxen's size ændres.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.