2017-06-08 17 views
1

シートに印刷された製品のグリッドを処理するWinformアプリケーションを作成しています。私のエンドユーザとより効果的にコミュニケーションをとるために、シート上のどのアイテムを処理できなかったかを示すために、グリッドの視覚的表現を作成することが任されています。イメージの動的生成グリッド

私の最初の考えは、画像のグリッド(緑色のチェックマーク/赤色のX)をグリッドで並べて、アプリケーションが実際に処理するシートに一致させることでした。そのアプローチの問題は、最終的に、異なるシートアライメントを使用する異なるジョブを持つことになります。 1つは3x10のグリッド、もう1つは1x8などです。

私のフォームの領域をイメージのために予約するために使用することができますか、また私のイメージファイルのコピーを挿入する方法はありますか?その領域に収まるようにサイズを変更しましたか?

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

:よう

何か?

申し訳ありませんが、これは愚かな質問です。私はC#で快適ですが、これらのもののGUIを設計する経験はほぼゼロです。

+3

必要な数の行と列(3x10など)を含むフォームに 'TableLayoutPanel'を追加し、別のセルに画像を配置します – ASh

答えて

1

@AShこれはまさに私が欲しかったことです。ありがとう。

それはここそこに誰を助け場合、私はTableLayoutPanelsを使用する方法を学ぶことが有用であることが判明いくつかの参照です:

は、実行時に行/列を生成しますが。 TableLayoutPanel rows & columns at runtime

のPictureBox内 Set image source to picturebox which is added dynamically to Table Layout Panel

サイズ変更画像をピクチャ画像ファイルを追加します(埋めるためにストレッチ) Fit Image into PictureBox

細胞 https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-align-and-stretch-a-control-in-a-tablelayoutpanel-control

内部センターの画像私のコード:

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); 
    } 

} 
関連する問題