Autor Beitrag
noiiZeee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 30.04.21 07:02 
Hallo Community!
Wie kann ich ein mehrdimensionalen Array wie z.B.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
string[,] matrix = {
                { "1""2""3" },
                { "4""5""6" },
                { "7""8""9" }
            };


über DrawString so ansprechen, dass es auch als Matrix ausgegeben wird?
Ich hab es mal provisorisch folgendermaßen gelöst:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
protected void OnPaint(PaintEventArgs e)
        {

            string[,] matrix = {
                { "1""2""3" },
                { "4""5""6" },
                { "7""8""9" }
            };

            for (int y = 0; y < matrix.GetLength(0); y++)
            {
                for (int x = 0; x < matrix.GetLength(1); x++)
                {
                    FontFamily font = new FontFamily("Arial");
                    Font points = new Font(font, 30, FontStyle.Regular, GraphicsUnit.Pixel);

                    rect.X += 25;
                    e.Graphics.DrawString(matrix[y, x].ToString(), points, new SolidBrush(Color.Black), rect);
                }

                rect.X = 10;
                rect.Y += 25;
            }
        }


Bin damit aber überhaupt nicht zufrieden. Ich hätte lieber ein "leeres Gitternetz" worin die Werte dann eingespeichert werden, weiß aber nicht wie ich das programmieren kann/soll.
Wäre dankbar, wenn mir da jemand weiter helfen könnte!
LG
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4621
Erhaltene Danke: 1013

Win10
C#, C++ (VS 2015/17/19)
BeitragVerfasst: Fr 30.04.21 08:42 
Was genau meinst du mit "leerem Gitternetz"? Fehlen dir die Ränder, so mußt du diese zusätzlich mit DrawLine bzw. DrawRect zeichnen.
Du solltest dazu am besten eine eigene Klasse entwickeln, welche passende Parameter (Eigenschaften) bereitstellt, wie z.B. Font, Ränder, X-, Y-Abstand etc.

Und falls du eine Komponente suchst, dann könntest du ein DataGridView benutzen.
Und das Binding könntest du dir anhand von Binding a two dimensional array to a DataGrid ansehen (ist zwar für das veraltete DataGrid geschrieben, sollte sich aber ähnlich an DataGridView anpassen lassen).

PS: Den Font solltest du nur einmalig (am besten außerhalb der Methode als Membervariable) erzeugen, anstatt in der Schleife jedesmal wieder einen neuen.