DOBON.NETプログラミング道掲示板
(現在 過去ログ5 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■34943 / inTopicNo.1)  PictureBox のサイズを設定する
  
□投稿者/ 星は昴 一般人(1回)-(2021/10/25(Mon) 16:48:09)
  • アイコン環境/言語:[C#] 
    分類:[.NET] 

     フォームに貼り付けた Pb(PictureBox)に画像を読み込み、PictureBox が読み込んだ画像の大きさになるようにしたいのですが、以下のコードだと PictureBox のサイズはフォームのデザインのままです。どうすればいいのでしょうか。

    private void BtnFileLoad_Click(object sender, EventArgs e)
    {
      Bitmap canvas = new Bitmap(Pb.Width, Pb.Height);
      Graphics g = Graphics.FromImage(canvas);

      Image img = Image.FromFile("C:\\mwmg006.bmp");
      g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));

      Pb.Width = img.Width;    //これではダメ
      Pb.Height = img.Height;
      Pb.Image = canvas;

      img.Dispose();
      g.Dispose();
    }

引用返信 削除キー/
■34944 / inTopicNo.2)  Re[1]: PictureBox のサイズを設定する
□投稿者/ 魔界の仮面弁士 大御所(1406回)-(2021/10/25(Mon) 17:31:54)
  • アイコンNo34943に返信(星は昴さんの記事)
    > フォームに貼り付けた Pb(PictureBox)に画像を読み込み、
    > PictureBox が読み込んだ画像の大きさになるようにしたいのですが、

    Pb.SizeMode = PictureBoxSizeMode.AutoSize; // ←デザイン時に指定しておけば OK
    Pb.Load("C:\\mwmg006.bmp");


    上記では Load メソッドを用いて読み込んでいますが、
    LoadAsync メソッドを使っても良いですし、
    ImageLocation プロパティや Image プロパティ経由で読み込んでも OK。


    > 以下のコードだと PictureBox のサイズはフォームのデザインのままです。
    そもそも、処理の冒頭で
    >   Bitmap canvas = new Bitmap(Pb.Width, Pb.Height);
    という、現在の Pb と同じサイズの画像を用意しているのは何のためでしょう?


    mwmg006.bmp のサイズを維持したいのであれば、元の Pb のサイズではなく
    読み込んだ画像サイズのキャンバスを用意するべきでしょう。

    あるいは、新しい画像に差し替えるのではなく、元の画像を維持して
    そこに重ね描きしていきたいというのであれば、サイズの違う画像同士の
    組み合わせとなった時に、一方を拡大縮小するのか、あるいは
    サイズの過不足分のために画像の一部を切り取って貼り合わせるのかといった
    何らかの「補完処置」の実装を検討する必要があるでしょう。
引用返信 削除キー/
■34945 / inTopicNo.3)  Re[2]: PictureBox のサイズを設定する
□投稿者/ 星は昴 一般人(2回)-(2021/10/25(Mon) 20:08:51)
  • アイコン 詳細な解説ありがとうございました。もうちょっといろいろ動かして確認してみます。

解決み!
引用返信 削除キー/



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

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -