0

画像を一列に表示しようとしています。このために、画像ボックスを動的に追加しようとしています。画像の場所はデータベースに保存されます。私のコードは

int iCtr = 0;
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            PictureBox picture = new PictureBox
            {
                Name = "pictureBox"+i,
                Size = new Size(316, 320),
                Location = new Point(1, iCtr * 1100 + 1),
                Visible = true
            };
           // string fname = dt.Rows[2]["FileName"].ToString();
            picture.ImageLocation = dt.Rows[i]["FileName"].ToString();
            //@"..\Images\80knhk00003.jpg";
            pnlDisplayImage.Controls.Add(picture);
            iCtr++;
        }

ここで、dtはデータ可能です。

これで私は最後の画像だけを見ることができますが、すべての画像を見ることができません。最後の画像でさえ非常に小さく、完全な画像は表示されません(つまり、実際の画像の1つのコーナーしか表示できません)。

完全に表示できるように画像にサイズを設定するにはどうすればよいですか?また、画像を連続して表示するにはどうすればよいですか?

助けてくださいありがとう

4

2 に答える 2

3

このようなことを試してみませんか?スケーリングを取得するには、PictureBoxSizeModeを参照してください。

List<PictureBox> pictureBoxList = new List<PictureBox>();

for (int i = 0; i < dt.Rows.Count; i++)
{
    PictureBox picture = new PictureBox
    {
        Name = "pictureBox" + i,
        Size = new Size(316, 320),
        Location = new Point(i * 316, 1),
        BorderStyle = BorderStyle.FixedSingle,
        SizeMode = PictureBoxSizeMode.Zoom
    };
    picture.ImageLocation = dt.Rows[i]["FileName"].ToString();
    pictureBoxList.Add(picture);
}

foreach (PictureBox p in pictureBoxList)
{
    pnlDisplayImage.Controls.Add(p);
}
于 2012-06-30T14:50:53.670 に答える
-1

Imageプロパティの代わりに、BackGroundImageプロパティを画像の場所に設定し、BackGroundImageLayoutを値 "Stretch"に設定すると、完全な画像が表示されます。

于 2012-06-30T14:28:36.523 に答える