2 つの質問があります。
1) がありPictureBox
、その Dock は Fill に設定されています。のサイズを変更すると、拡張さForm
れた部分にグラフィックを作成できません。PictureBox
何が問題ですか?
2) で作成したグラフィックを変換して、PictureBox
* Bitmap
.JPG または *.bmp として保存したい。これどうやってするの?
2 つの質問があります。
1) がありPictureBox
、その Dock は Fill に設定されています。のサイズを変更すると、拡張さForm
れた部分にグラフィックを作成できません。PictureBox
何が問題ですか?
2) で作成したグラフィックを変換して、PictureBox
* Bitmap
.JPG または *.bmp として保存したい。これどうやってするの?
ハンドル デバイスを使用して 、ピクチャ ボックスからビットマップを取得できます。
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);
これを試してください、私にとってはうまくいきます...
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)
{
//
}
}
1)あなたの説明は非常に曖昧です。例外はありますか?間違った結果が表示されますか?何が起こっている?
2)PictureBoxから画像を取得し、そのSaveメソッドを使用する必要があります。
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);
それが役立つことを願っています!