C# Windows FormsアプリケーションでImageの表示サイズを縮小したい場合、主に PictureBox コントロールのプロパティを使用します。
最も簡単な方法:PictureBoxのSizeModeプロパティを使用する
PictureBoxコントロールには、表示する画像のサイズ調整方法を制御する SizeMode プロパティがあります。このプロパティを変更することで、簡単に画像の表示サイズを調整できます。
- PictureBoxコントロールを選択します。
 - プロパティウィンドウを開きます。 (通常はVisual Studioの右側に表示されています。表示されていない場合は、メニューバーの「表示」→「プロパティウィンドウ」を選択します。)
 - SizeModeプロパティを探して、ドロップダウンリストから適切なオプションを選択します。
 
利用できる主なSizeModeオプションは以下の通りです。
- Normal: 画像を元のサイズで表示します。PictureBoxのサイズよりも大きい場合は、画像の一部が切り取られて表示されます。
 - StretchImage: 画像をPictureBoxのサイズに合わせて拡大または縮小して表示します。縦横比は維持されません。
 - AutoSize: PictureBoxのサイズを画像のサイズに合わせて自動的に調整します。
 - CenterImage: 画像をPictureBoxの中央に表示します。PictureBoxのサイズよりも大きい場合は、画像の一部が切り取られて表示されます。
 - Zoom: 画像の縦横比を維持したまま、PictureBoxにできるだけ大きく表示します。PictureBoxのサイズよりも大きい場合は、全体が表示されるように縮小されます。PictureBoxのサイズよりも小さい場合は、拡大されます。縮小表示したい場合は、このオプションが適していることが多いです。
 
例:SizeModeをZoomに設定するコード
// PictureBoxコントロールの名前をpictureBox1と仮定
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
SizeModeプロパティをコードから設定する方法
フォームのロード時や、画像をPictureBoxに設定する際に、コードからSizeModeプロパティを設定することもできます。
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Load += Form1_Load;
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        // 画像を読み込む
        Image image = Image.FromFile("path/to/your/image.jpg");
        // PictureBoxに画像を設定
        pictureBox1.Image = image;
        // SizeModeをZoomに設定して表示サイズを縮小
        pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
    }
}
補足:Paintイベントで描画サイズを制御する方法 (より高度な場合)
より細かく表示サイズを制御したい場合は、PictureBoxの Paint イベントを処理し、Graphicsオブジェクトの DrawImage メソッドを使用して、指定したサイズで画像を描画する方法もあります。
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    if (pictureBox1.Image != null)
    {
        // 描画先のRectangleを指定 (PictureBoxのクライアント領域)
        Rectangle destRect = new Rectangle(0, 0, pictureBox1.Width / 2, pictureBox1.Height / 2); // 例:半分のサイズで描画
        // 元の画像のRectangleを指定
        Rectangle srcRect = new Rectangle(0, 0, pictureBox1.Image.Width, pictureBox1.Image.Height);
        // Graphicsオブジェクトを使って画像を描画
        e.Graphics.DrawImage(pictureBox1.Image, destRect, srcRect, GraphicsUnit.Pixel);
    }
}
この方法では、destRect で描画先のサイズと位置を指定することで、表示サイズを自由に制御できます。ただし、SizeModeプロパティを使用するよりも複雑になります。
ほとんどの場合、PictureBoxのSizeModeプロパティを適切に設定することで、Imageの表示サイズを簡単に縮小できます。特に、縦横比を維持したまま縮小したい場合は PictureBoxSizeMode.Zoom を試してみてください。
0 件のコメント:
コメントを投稿