C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#・クライアント領域にPictureBoxを敷き詰めたい

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■91021 / inTopicNo.1)  C#・クライアント領域にPictureBoxを敷き詰めたい
  
□投稿者/ cccc4 (1回)-(2019/05/19(Sun) 18:03:49)

分類:[.NET 全般] 

お世話になっております。
VisualStudi2017 C# DotnetFramework4.6で開発しています。

FormのClientSize.width/ClientSize.heightが800/600の状態で、
50*50の画像をFormのクライアント領域に敷き詰めようと、
PictureBoxが16*12個出来上がるコードを記述しました。

なお画面起動時に以下のコードを実行をしています。
this.ClientSize = new Size(800, 600);

結果、PictureBox一個と半分ほど、Formの幅が足りませんでした。
つまり端っこの一つが、約25pixelほど隠れてしまっている状態です。
高さは約PictureBox一個分ほど足りていませんでした。

原因として何が考えられるでしょうか。
思い付くものがありましたらお教え下さい。

なおformのmargin及びpaddingはそれぞれ0です。

引用返信 編集キー/
■91022 / inTopicNo.2)  Re[1]: C#・クライアント領域にPictureBoxを敷き詰めたい
□投稿者/ ぼーちゃん (8回)-(2019/05/20(Mon) 09:18:46)
Windows Formアプリ ですよね。

コードでpictureboxを16*12個置いているのなら、
そのコードを貼ったほうが有益な回答があると思います。

ちなみに、大きなpictrureboxを1つだけ置いて、
そこにタイル状に画像表示という方法もありますが、
それでは質問者さんの要求は満たせないですか?
その方が処理は早い気がするのですが。
(pictureboxを16*12個配置することが重要ですか?)
引用返信 編集キー/
■91023 / inTopicNo.3)  Re[1]: C#・クライアント領域にPictureBoxを敷き詰めたい
□投稿者/ 魔界の仮面弁士 (2174回)-(2019/05/20(Mon) 10:16:40)
No91021 (cccc4 さん) に返信
> 結果、PictureBox一個と半分ほど、Formの幅が足りませんでした。
> つまり端っこの一つが、約25pixelほど隠れてしまっている状態です。

当方では再現しませんでした。

下記のコードを実行してみて、当方の
 http://www.vb-user.net/junk/replySamples/2019.05.20.09.51/Form1.png
な結果と比較してみてください。

private PictureBox[,] matrix = new PictureBox[16, 12];
public Form1()
{
  // 検証用に、あえてデザイナコードを排除
  // InitializeComponent();

  // http://www.vb-user.net/junk/replySamples/2019.05.20.09.51/50x50.png
  Bitmap bmp = new Bitmap("50x50.png");

  EventHandler appClose = delegate { this.Close(); };

  this.FormBorderStyle = FormBorderStyle.None;
  this.ClientSize = new Size(800, 600);
  for (int x = 0; x < 16; x++)
  {
    for (int y = 0; y < 12; y++)
    {
      var pb = new PictureBox { Name = $"pb{x:00}{y:00}" };
      
      pb.SizeMode = PictureBoxSizeMode.Normal;
      pb.BorderStyle = BorderStyle.None;
      pb.SetBounds(x * 50, y * 50, 50, 50);
      pb.Image = bmp;
      pb.DoubleClick += appClose;
      this.Controls.Add(matrix[x, y] = pb);
    }
  }
  this.DoubleClick += appClose;
}
引用返信 編集キー/
■91037 / inTopicNo.4)  Re[2]: C#・クライアント領域にPictureBoxを敷き詰めたい
□投稿者/ cccc4 (2回)-(2019/05/20(Mon) 17:36:59)
ぼーちゃんさん
魔界の仮面弁士さん
回答ありがとうございます。

魔界の仮面弁士さんの以下のコード
this.FormBorderStyle = FormBorderStyle.None;

で敷き詰めることに成功しました。
marginとpaddingについて調べたつもりだったのですが......

標準のFormBorderStyleの使用をやめることで対応したいと思います。
ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ