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