Hallo, ich möchte in Visualstudio ein WPF-Projekt in C# erstellen. Das ganze soll später ein Zellulärer Automat werden. Zunächst wollte ich ein RasterFeld erstellen. Das funktioniert auch, aber ich bekomme ein Merkwürdiges Verhalten.
1 | private void timer_tick(object sender, EventArgs e) |
2 | { |
3 | ZA_Field_Copy = ZA_Field; |
4 | uint k = 2; |
5 | uint l = 2; |
6 | ZA_Field[k, l] = 0; // Um diese Zeile geht es |
7 | //ZA_Field_Copy[k, l] = 0; |
8 | ZA_Field = ZA_Field_Copy; |
9 | redraw(); |
10 | } |
11 | |
12 | |
13 | |
14 | |
15 | private void redraw() |
16 | { |
17 | int nr = 0; |
18 | for (int k = 0; k < ZA_Field_y; k++) |
19 | { |
20 | for (int l = 0; l < ZA_Field_x; l++) |
21 | { |
22 | nr = k * ZA_Field_y + l; |
23 | if (ZA_Field[k,l] == 1) |
24 | { |
25 | _rectangles[nr].Fill = Brushes.Black; |
26 | } |
27 | else |
28 | { |
29 | _rectangles[nr].Fill = Brushes.Azure; |
30 | } |
31 | |
32 | myCanvas.Children.Remove(_rectangles[nr]); |
33 | myCanvas.Children.Add(_rectangles[nr]); |
34 | } |
35 | } |
36 | } |
Das Feld an sich ist 5x5 Felder groß und ist an den plätzen [2,1][2,1][2,3] schwarz markiert. Kommentiere ich den Befehl ZA_Field[k, l] = 0; aus, so wird das Feld nach dem Zeittick so gezeichnet. Nehme ich die Zeile ZA_Field_Copy[k, l] = 0; rein, so wird das erste Feld leer dargestellt (damit habe ich getestet, ob das Feld komplett kopiert wird. Nehme ich jetzt aber nur die Zeile ZA_Field[k, l] = 0; rein, bleibt das Feld leer, obwohl ich danach wieder ZA_Field_Copy nehme. das kann ich leider gar nicht verstehen und hänge auch schon länger davor. Daher hoffe ich hier einen hinweis zu bekommen. Mark