PDA

View Full Version : ذخیره تصویر پنل رسم (panel graphic) به صورت خالی



jaboli
دوشنبه 26 مرداد 1394, 17:48 عصر
سلام من تونستم یه برنامه پینت یا نقاشی با سی شارپ درست کنم که از ابزار های panel,color dialog,tracker استفاده کردم که به خوبی هم کار میکنه و حتی دستوری برای ذخیره به صورت عکس هم نوشتم براش ولی مشکل اینجاست که عکس رو به صورت حالی یا سفید ذخیره میکنه و رسم های داخلش رو نشون نمیده.کمی سرچ کردم که بعضیا میگن باید با رویداد paint event یا e.graphic باید انجام بشه تا درست بشه ولی من متوجه نشدم کسی میدونه مشکل چیه؟!


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace pezeshk
{
public partial class pen : Form
{
private SolidBrush myBrush;
private Graphics myGraphics;
private bool isDrawing = false;
Point mDown = Point.Empty;
public pen()
{
InitializeComponent();
}

private void pen_Load(object sender, EventArgs e)
{
myBrush = new SolidBrush(panel2.BackColor);
myGraphics = panel1.CreateGraphics();


}

private void panel2_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
panel2.BackColor = colorDialog1.Color;
myBrush.Color = panel2.BackColor;
}
}

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
mDown = e.Location;
}

List<Rectangle> circles = new List<Rectangle>();

private void panel1_MouseUp(object sender, MouseEventArgs e)
{
circles.Add(new Rectangle(mDown.X, mDown.Y, trackBar1.Value, trackBar1.Value));
panel1.Invalidate();
}

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
mDown = e.Location;
panel1.Invalidate();
}
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.FillEllipse(myBrush, mDown.X, mDown.Y, trackBar1.Value, trackBar1.Value);
foreach (Rectangle rect in circles) e.Graphics.FillEllipse(myBrush, rect);
}


private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.DefaultExt = "bmp";
saveFileDialog.Filter = "Bitmap files|*.bmp";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
int width = panel1.Width;
int height = panel1.Height;

Bitmap bitMap = new Bitmap(width, height);
Rectangle rec = new Rectangle(0, 0, width, height);

panel1.DrawToBitmap(bitMap, rec);

bitMap.Save(saveFileDialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
}
/*int width = panel1.Size.Width;
int height = panel1.Size.Height;

using (Bitmap bmp = new Bitmap(width, height))
{
panel1.DrawToBitmap(bmp, new Rectangle(0, 0, width, height));
bmp.Save(@"C:\testBMP.jpeg", ImageFormat.Jpeg);
}*/
}

private void button2_Click(object sender, EventArgs e)
{
Graphics g1 = panel1.CreateGraphics();
g1.Clear(panel1.BackColor);
}

}
}