Beste Tweaker(s),
Ik ben op het moment bezig een soort programma als Paint te maken. Ik ben aan het proberen om een lijn te tekenen op mijn beeldscherm. Deze lijn word getekend door middel van een MouseMove event. Ook moet ik mijn linkermuisknop hebben ingehouden wil ik de lijn kunnen tekenen. Deze lijn MOET getekend worden binnen een picturebox. Ik heb al het een ander geprobeerd, maar ik kom er maar niet uit. Hebben jullie misschien ideeën of tips hoe ik dit probleem wel kan oplossen?
Hierin laad ik een image (geheel wit vierkant, op de afmetingen van de PictureBox) in de PictureBox. Een klasgenoot gaf dit als tip om te kunnen tekenen.
Hier zet ik de boolean Tekenen op true, zodat hij in het MouseMove event kan tekenen. De locaties van waar de lijn moet worden getekent worden gezet in startX en startY.
Hier het MouseMove event van waar de lijn moet worden getekend. Aangezien je op muisbeweging moet tekenen. Had ik in gedachte dat je telkens het einde van de lijn het nieuwe beginpunt is van de nieuwe lijn.
De lijn moet trouwens een vloeiende lijn zijn, ik had al eerst iets anders weten te maken. Maar zodra ik snel van de linker naar rechterkant ging, dan kwamen er witten stukken tussen de lijnen te staan.
Ik hoop dat jullie me iets verder op weg kunnen helpen.
Ik ben op het moment bezig een soort programma als Paint te maken. Ik ben aan het proberen om een lijn te tekenen op mijn beeldscherm. Deze lijn word getekend door middel van een MouseMove event. Ook moet ik mijn linkermuisknop hebben ingehouden wil ik de lijn kunnen tekenen. Deze lijn MOET getekend worden binnen een picturebox. Ik heb al het een ander geprobeerd, maar ik kom er maar niet uit. Hebben jullie misschien ideeën of tips hoe ik dit probleem wel kan oplossen?
C#:
1
2
3
4
5
6
7
8
| // Declaratie variabelen Color colorPen = Color.Black; int thickLine = 1; Bitmap image1; bool Tekenen; int startX; int startY; |
Hierin laad ik een image (geheel wit vierkant, op de afmetingen van de PictureBox) in de PictureBox. Een klasgenoot gaf dit als tip om te kunnen tekenen.
C#:
1
2
3
4
5
| private void Form1_Load(object sender, EventArgs e) { image1 = new Bitmap(Properties.Resources.Image); pB.Image = (Image)image1; } |
Hier zet ik de boolean Tekenen op true, zodat hij in het MouseMove event kan tekenen. De locaties van waar de lijn moet worden getekent worden gezet in startX en startY.
C#:
1
2
3
4
5
6
| private void pB_MouseDown(object sender, MouseEventArgs e) { Tekenen = true; startX = e.Location.X; startY = e.Location.Y; } |
Hier het MouseMove event van waar de lijn moet worden getekend. Aangezien je op muisbeweging moet tekenen. Had ik in gedachte dat je telkens het einde van de lijn het nieuwe beginpunt is van de nieuwe lijn.
De lijn moet trouwens een vloeiende lijn zijn, ik had al eerst iets anders weten te maken. Maar zodra ik snel van de linker naar rechterkant ging, dan kwamen er witten stukken tussen de lijnen te staan.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| private void pB_MouseMove(object sender, MouseEventArgs e) { int eindX = startX; int eindY = startY; startX = e.X; startY = e.Y; if (Tekenen == true) { Graphics G = Graphics.FromImage(image1); Pen Pen1 = new Pen(colorPen, thickLine); GraphicsPath Path = new GraphicsPath( new Point[] { new Point(startX, startY), new Point(eindX, eindY) }, new byte[] { (byte)PathPointType.Start, (byte)PathPointType.Line }); G.DrawPath(Pen1, Path); G.Save(); pB.Image = image1; } } |
Ik hoop dat jullie me iets verder op weg kunnen helpen.