In navolging op Midden Circel vinden (VB 6) ben ik ook eens aan de slag gegaan.
Vaste gegevens om correcte testwaardes te krijgen
Radius Cirkel: 180px;
Spotpoint x en y: 40
Het vinden van de lengte van de X-as gaat me perfect af middels volgende code:
Om nu de lengte uit te rekenen trekken we colorChangeXStart van colorChangeXend af wat dus 160 is. Uiteraard heb ik Photoshop erbij gepakt om het na te meten. Dat klopt perfect.
Nu gaan we Y uitrekenen. Even simpel copy/paste gedaan van de X berekening.
Bij het uitrekenen van de Y wordt er na de 1e iteratie al uit de while loop gesprongen. startpoint(40,41). Dit verwacht ik niet en hier heb ik geen verklaring voor.
Wie wel?
Vaste gegevens om correcte testwaardes te krijgen
Radius Cirkel: 180px;
Spotpoint x en y: 40
C#:
1
2
3
| Point startpoint = spotpoint; //spotpoint(40,40) Bitmap newcircle = new Bitmap(pictureBox1.Image); Color srccolor = newcircle.GetPixel(startpoint.X, startpoint.Y); |
Het vinden van de lengte van de X-as gaat me perfect af middels volgende code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
| while (newcircle.GetPixel(startpoint.X, startpoint.Y)==srccolor) { startpoint.X--; } int colorChangeXStart = startpoint.X + 1; //save point! > geeft 20 startpoint = spotpoint; //reset startpoint while (newcircle.GetPixel(startpoint.X, startpoint.Y) == srccolor) { startpoint.X++; } int colorChangeXend = startpoint.X; //save point geeft 180 |
Om nu de lengte uit te rekenen trekken we colorChangeXStart van colorChangeXend af wat dus 160 is. Uiteraard heb ik Photoshop erbij gepakt om het na te meten. Dat klopt perfect.
Nu gaan we Y uitrekenen. Even simpel copy/paste gedaan van de X berekening.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| startpoint = spotpoint;//reset startpoint while (newcircle.GetPixel(startpoint.X, startpoint.Y)==srccolor) { startpoint.Y--; } int colorChangeYStart = startpoint.Y + 1; //save point! > geeft 20, en klopt ook! startpoint = spotpoint; //reset startpoint while (newcircle.GetPixel(startpoint.X, startpoint.Y) == srccolor) { startpoint.Y++; } int colorChangeYend = startpoint.Y; //hier gaat het dus fout. Geeft 41! |
Bij het uitrekenen van de Y wordt er na de 1e iteratie al uit de while loop gesprongen. startpoint(40,41). Dit verwacht ik niet en hier heb ik geen verklaring voor.
Wie wel?
Heart..pumps blood.Has nothing to do with emotion! Bored