ユーザーがパネルに描画してビットマップとしてコンピューターに保存できる単純なアプリケーションを作成しようとしています。しかし、保存部分に進むと、空の (白い) ビットマップしか表示されません。
私は他の多くのソリューションを閲覧してきましたが、ビットマップを正しい方法で保存していると確信しているので、描画プロセスが間違っているのではないかと思い始めています。ここで正確に何が間違っていますか?
public partial class Form1 : Form
{
SolidBrush brush;
Pen pen;
Point[] points = new Point[3];
Graphics display;
Bitmap bmap;
public Form1()
{
InitializeComponent();
display = panel1.CreateGraphics();
bmap = new Bitmap(panel1.Width, panel1.Height);
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
brush = new SolidBrush(Color.Black);
pen = new Pen(Color.Black);
display.FillEllipse(brush, e.X, e.Y, 10, 10);
panel1.DrawToBitmap(bmap, new Rectangle(0, 0, panel1.Width, panel1.Height));
//this.Invalidate();
}
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
{
Graphics display = panel1.CreateGraphics();
display.Clear(panel1.BackColor);
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
bmap.Save(@"C:\Temp\Test.bmp");
}
}
編集 このリビジョンでは、黒い bmp が表示されるだけで、画面上に省略記号が作成されていません。マウスダウンイベントに無効化とビットマップへの描画を戻すと、保存ボタンは最後の楕円を保存することに気付きましたが、画面にはまだ何も表示されていません。
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
mousedown = true;
x = e.X;
y = e.Y;
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
//Graphics g = e.Graphics;
if(mousedown==true)
{
brush = new SolidBrush(Color.Black);
pen = new Pen(Color.Black);
Graphics.FromImage(bmap).FillEllipse(brush, x, y, 10, 10);
panel1.Invalidate();
//panel1.DrawToBitmap(bmap, new Rectangle(0, 0, panel1.Width, panel1.Height));
//panel1.Invalidate();
}
}