画像の表示

プログラム学習

画像用表示領域に画像を中央に最大で表示する

今回は、画像を中央に、かつ最大になるように表示したいと思います。画像の表示する市と大きさを計算する関数を作ります。Formやpanelなど高さや幅は、整数なので、比率を計算する都合上、floatに変換して置きます。

    private static List<int> ImageSize(int pan_h, int pan_w, int picture_h, int picture_w)
    {
        List<int> size_position = new List<int>();
        int position_h;
        int position_w;
        int image_h;
        int image_w;
        float panel_h = (float)pan_h; 表示領域の高さをfloatに変換する
        float panel_w = (float)pan_w; 表示領域の幅をfloatに変換する
        float Percentage1 = panel_h / panel_w;
        float pict_h = (float)picture_h; 画像の高さをfloatに変換する
        float pict_w = (float)picture_w; 画像の幅をfloatに変換する
        float Percentage2 = pict_h / pict_w;
        if (Percentage1 < Percentage2)
        {
            if (pict_h < panel_h)
            {
                position_h = pan_h / 2 - picture_h / 2;
                position_w = pan_w / 2 - picture_w / 2;
                image_h = picture_h;
                image_w = picture_w;
            }
            else
            {
                position_h = 0;
                position_w = pan_w / 2 - (int)(pict_w / 2 * panel_h / pict_h);
                image_h = pan_h;
                image_w = (int)(pict_w * panel_h / pict_h);
            }
        }
        else
        {
            if (pict_w < panel_w)
            {
                position_h = pan_h / 2 - picture_h / 2;
                position_w = pan_w / 2 - picture_w / 2;
                image_h = picture_h;
                image_w = picture_w;
            }
            else
            {
                position_h = pan_h / 2 - (int)(pict_h / 2 * panel_w / pict_w);
                position_w = 0;
                image_h = (int)(pict_h * panel_w / pict_w);
                image_w = pan_w;
            }
        }

        size_position.Add(position_w); 計算されたX軸上の位置をリストに加える
        size_position.Add(position_h);; 計算されたy軸上の位置をリストに加える
        size_position.Add(image_w); 計算された画像の幅をリストに加える
        size_position.Add(image_h); 計算された画像の高さをリストに加える
        return size_position;戻り値は位置、大きさの情報を含む
    }
     imagesize = ImageSize(表示領域の高さ, 表示領域の幅, 画像の幅, 画像の高さ);

      pictureBox1.Location = new Point(imagesize[0], imagesize[1]);位置は。左側上部を指定する
      pictureBox1.Size = new Size(imagesize[2], imagesize[3]);画像の大きさ
      pictureBox1に位置と大きさを指定して表示させたところ。                      
      pictureBox1.Show();

コメント

タイトルとURLをコピーしました