私のプログラムは、フォーム内にsplitcontainerを持っています。 Panel1にはボタンがあり、クリックするとpanel2が画像として保存されます(理想的にはjpg)。私は使用しているコードにいくつか問題があります。私のビットマップは、両サイドに黒い棒が付いたjpgを保存するのはなぜですか?
private void btnSave_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(splitContainer1.Panel2.Width * 2, splitContainer1.Panel2.Height);
splitContainer1.Panel2.DrawToBitmap(bmp, splitContainer1.Panel2.Bounds);
bmp.Save(@"C:\Test.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
}
私の興味をそそられたコードには、次のような問題があります。
- そのまま使用すると、正しく保存されたjpgファイルが得られますが、側面に黒が追加されています。
- System.Drawing.Imaging.ImageFormat.Jpegを省略するようにコードの最後の行を変更すると、どちらの側にも2つのクリアボックスが表示されますが、これはまだ私が望んでいないものです。 (彼らははっきりしているが、彼らはまだそこにいる)。
は、どのように私はパネルの周りの余分な面積ずに保存されたばかりのjpgファイルを入手できますか?
EDIT: 私はSplitcontainer1.panel2.width *の呼び出しを指摘しました。2.幅を2倍にしないと、実際のパネル2の半分しか下に収まらず、不要なブラックバー/ clearbars:
が原因黒色/透明ブロックに、偶然、それがあるべきとして2倍の大き出力です:彼らはに描画するあなたの呼び出しはおそらくあるべきビットマップ内の矩形を表しますか? – phill
Chrisが正しいです。 2番目の質問に答えるには、黒バーと透明バーが表示されます。なぜなら、デフォルトはおそらくPNGで、アルファチャンネル(透明)を許可するのに対して、JPGはアルファチャンネルを含まないからです。 –
私のコードがjpgであると言うと、なぜpngになるのですか? –