enregistrement d'image à partir d'un contrôle pictureBox en c#
Mon programme permet à l'utilisateur de dessiner dans une zone de l'image qui est en quelque sorte une manière similaire à MS paint, et maintenant je suis en essayant de sauver la pictureBox comme une .fichier jpg, mais je vais avoir la valeur null erreur d'exception lorsque vous essayez de le faire.
Edit: faut mentionner que c'est une exception NullReferenceException
Voici mon bouton enregistrer où je reçois l'erreur d'exception:
private void button3_Click(object sender, EventArgs e)
{
pictureBox1.Image.Save(@"C:\New folder\picture.jpg", ImageFormat.Jpeg);
}
et voici le reste de mon code:
public Form2()
{
InitializeComponent();
//creates items for combobox brush sizes
for (int i = 1; i <= 20; i++)
{
string[] numbers = { i.ToString() };
comboBox1.Items.AddRange(numbers);
}
}
bool paint = false;
SolidBrush color = new SolidBrush(Color.Black);
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
paint = true;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
paint = false;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (paint == true)
{
int brushSize = Convert.ToInt32(comboBox1.SelectedItem);
Graphics g = pictureBox1.CreateGraphics();
if (comboBox1.SelectedIndex > 0)
{
g.FillEllipse(color, e.X, e.Y, brushSize, brushSize);
}
else
{
g.FillEllipse(color, e.X, e.Y, 10, 10);
}
g.Dispose();
}
}
//button that opens colour dialog box
private void button1_Click_1(object sender, EventArgs e)
{
ColorDialog cld = new ColorDialog();
if (cld.ShowDialog() == DialogResult.OK)
{
color = new SolidBrush(cld.Color);
}
}
//Button that clears pictureBox
private void Button2_Click_1(object sender, EventArgs e)
{
Graphics g1 = pictureBox1.CreateGraphics();
g1.Clear(pictureBox1.BackColor);
}
- Êtes-vous sûr que le
Button_Click_1
ne pas se produire avant que vous essayez d'enregistrer l'image ? - Comment est-ce d'abord cliquez sur le bouton effet d'enregistrer cliquez sur le bouton?
- Vous n'avez jamais réellement affecté la PictureBox.Propriétés de l'Image, en choisissant de peindre directement à la place. Ce qui fonctionne bien. Cette propriété est toujours null si, kaboom lorsque vous essayez de l'enregistrer.
Vous devez vous connecter pour publier un commentaire.
Vous devez tout dessiner sur une Image via le correspondant
Graphics
objet. Ici, c'est le condamné à une amende de code que j'ai corrigé pour vous, il est au moins mieux et succincte que votre code:Si l'erreur est
ArgumentNullException
alors assurez-vous que le dossier que vous essayez d'enregistrer pour existehttp://msdn.microsoft.com/en-us/library/9t4syfhh.aspx
EDIT:
Plus loin vers le commentaire ci-dessous, ce problème est probablement causé parce que vous n'avez pas d'image chargée dans le PictureBox.
Voir cette.
Je pense que votre picturebox a pas photo. Lorsque vous cliquez sur button1 votre zone d'image de l'image est nulle. Clic droit sur l'image de votre zone et dans les propriétés de l'import de photos avant de les exécuter du code.
Comme Roi Roi démontré ci-dessus, de re-création de la
Graphics
objet peut provoquer un scintillement. Aussi, vous devez créer l'image bitmap à l'aide deFromImage
ou votre dessin ne sera pas à l'image, et elle le restera nulle en dépit de ce que vous voyez sur l'écran.