2017-06-08 2 views
1

Ich schreibe eine Winform-Anwendung, die ein Raster von auf einem Blatt gedruckten Produkten verarbeitet. Um effektiver mit meinem Endbenutzer zu kommunizieren, wurde ich damit beauftragt, eine visuelle Darstellung des Gitters zu erstellen (anstatt ihnen einfach "Zeile x Spalte im Text" zu geben), um darzustellen, welche Elemente auf dem Blatt nicht verarbeitet werden konnten.Dynamisch generiertes Raster von Bildern

Mein erster Gedanke war, ein Gitter von Bildern (grünes Häkchen/rotes X) in einem Raster ausgerichtet zu dem Blatt, das die App tatsächlich verarbeiten wird, zu verwenden. Das Problem bei diesem Ansatz besteht darin, dass wir möglicherweise verschiedene Jobs verwenden, die unterschiedliche Blattausrichtungen verwenden. Einer könnte ein 3x10 Raster sein, ein anderer könnte ein 1x8 usw. sein.

Gibt es etwas, das ich verwenden kann, um einen Bereich meines Formulars als reserviert für Bilder zu definieren, und auch eine Möglichkeit zum Einfügen von Kopien meiner Bilddatei angepasst, um in diesen Bereich zu passen?

Etwas wie:

container.add(
    new Image("myFileLocation", imgHeight, imgWidth), 
    (container.height/numRows), 
    (container.width/numCols) 
    ); 

?

Sorry, wenn das eine dumme Frage ist. Ich bin bequem in C#, habe aber ungefähr null Erfahrung beim Entwerfen von GUIs für diese Dinge.

+3

fügen Sie 'TableLayoutPanel' im Formular mit der erforderlichen Anzahl von Zeilen und Spalten (3x10 usw.) hinzu und fügen Sie Bilder in verschiedene Zellen ein – ASh

Antwort

1

@ASh das ist genau das, was ich wollte, danke.

Im Fall hilft es jemand da draußen hier einige Referenzen, die ich nützlich zu lernen, wie TableLayoutPanels verwenden:

generieren Zeilen/Spalten zur Laufzeit. TableLayoutPanel rows & columns at runtime

Add-Image-Datei picturebox Set image source to picturebox which is added dynamically to Table Layout Panel

Resize Bild innerhalb picturebox (Füllen Sie durch Dehnung) Fit Image into PictureBox

-Center Bilder innerhalb der Zellen https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-align-and-stretch-a-control-in-a-tablelayoutpanel-control

Mein Code:

int rows = 7; //Will come from database 
int cols = 3; //Will come from database 
int colWidth; 
int rowHeight; 
PictureBox pbox; 
Random rnd = new Random(); 

colWidth = 100/cols; 
if (100 % cols != 0) 
    colWidth--; 

rowHeight = 100/rows; 
if (100 % rows != 0) 
    rowHeight--; 


tabLP.Controls.Clear(); 
tabLP.ColumnStyles.Clear(); 
tabLP.RowStyles.Clear(); 

tabLP.ColumnCount = cols; 

for (int i = 0; i < rows; i++) 
{ 
    tabLP.RowStyles.Add(new RowStyle(SizeType.Percent, rowHeight));     
    for (int j = 0; j < cols; j++) 
    { 
     tabLP.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, colWidth)); 

     if (rnd.NextDouble() > 0.5) 
     { 
      pbox = new PictureBox() { Image = Properties.Resources.red_X}; 
     } 
     else 
     { 
      pbox = new PictureBox() { Image = Properties.Resources.checkbox_green }; 
     } 

     pbox.Dock = DockStyle.Fill; 
     pbox.SizeMode = PictureBoxSizeMode.StretchImage; 
     tabLP.Controls.Add(pbox, j, i); 
    } 

} 
Verwandte Themen