8

2 つの質問があります。

1) がありPictureBox、その Dock は Fill に設定されています。のサイズを変更すると、拡張さFormれた部分にグラフィックを作成できません。PictureBox何が問題ですか?

2) で作成したグラフィックを変換して、PictureBox* Bitmap.JPG または *.bmp として保存したい。これどうやってするの?

4

4 に答える 4

7

ハンドル デバイスを使用して 、ピクチャ ボックスからビットマップを取得できます。

Graphics g = pictureBox1.CreateGraphics();          
Bitmap bitMap = Bitmap.FromHbitmap(g.GetHdc());
bitMap.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);

さらに良いことに、pictureBox が画像を変更しない場合は、pictureBox コントロールから画像を直接取得できます。

pictureBox1.Image.Save("path", System.Drawing.Imaging.ImageFormat.Jpeg);
于 2010-05-21T10:16:00.380 に答える
2

これを試してください、私にとってはうまくいきます...

    private void SaveControlImage(Control ctr)
    {
        try
        {
            var imagePath = @"C:\Image.png";

            Image bmp = new Bitmap(ctr.Width, ctr.Height);
            var gg = Graphics.FromImage(bmp);
            var rect = ctr.RectangleToScreen(ctr.ClientRectangle);
            gg.CopyFromScreen(rect.Location, Point.Empty, ctr.Size);

            bmp.Save(imagePath);
            Process.Start(imagePath);

        }
        catch (Exception)
        {
            //
        }
    }
于 2016-05-20T07:29:46.450 に答える
0

1)あなたの説明は非常に曖昧です。例外はありますか?間違った結果が表示されますか?何が起こっている?

2)PictureBoxから画像を取得し、そのSaveメソッドを使用する必要があります。

于 2010-05-21T09:31:10.630 に答える
0

Picturebox のサイズが変更されてフォームがいっぱいになると、Image プロパティは同じままのようです。

そのため、PictureBox.OnSizeChanged イベントを処理し、次のコードを使用して画像のサイズを変更する必要があります。

private void pictureBox1_SizeChanged(object sender, EventArgs e)
{
    if ((pictureBox1.Image != null))
    {
        pictureBox1.Image = new Bitmap(pictureBox1.Image, pictureBox1.Size);
    }
}

画像を保存するには:

pictureBox1.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);

それが役立つことを願っています!

于 2010-05-21T10:18:17.807 に答える