Ce qui se passe, c'est que je dois dessiner un rectangle noir sur l'image. Je dois charger un tif puis montrer une blackbox dessus. J'ai été aidé avec du code, mais j'ai continuellement l'erreur: Un objet Graphics ne peut pas être créé à partir d'une image qui a un format de pixel indexé.C# rédaction dessin sur Image
J'ai donc dû le lire en format binaire, mais quand j'affiche la boîte, il redimensionne la boîte wierd. Et affiche complètement la boîte d'image dans tout le noir rien de l'image originale. Si quelqu'un pouvait m'aider là où je me trompe, ce serait génial.
Bitmap original = (Bitmap)System.Drawing.Image.FromFile(coveted, true);
Bitmap newImage = new Bitmap(original.Width, original.Height);
pictureBox1.Image = newImage;
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
using (SolidBrush brush = new SolidBrush(Color.Black))
{
g.FillRectangle(brush, new Rectangle(x1value, y1value, x3value, y3value));
}
}
Je ne sais pas comment je peux le rendre plus clair. Ce qui se passe est que j'ai un tif dans un format non pris en charge. Donc je dois le changer en Bitmap pour pouvoir dessiner un rectangle. Ensuite, j'ai besoin d'afficher cette image rédigée (l'original avec la rédaction) dans une image. Ce qui se passe avec le code ci-dessus, c'est une fois qu'il est terminé, tout ce qu'il affiche est une boîte noire sans image originale.
Je crois que j'ai couru quelque chose à propos de l'utilisation d'un bitmap à partir du flux, puis la fermeture du flux. Quelqu'un connaît-il cela?
Merci à toute l'aide des membres de la STO !! Voici le code correct pour la suppression des images si vous rencontrez l'erreur "Un objet graphique ne peut pas être créé à partir d'une image qui a un format de pixel indexé.". si on vous donne les points de départ expurgés (évidemment, vous devez faire le travail Regex à votre situation):
//Regex for pulling points from a file
string x1 = x1 = Regex.Match(l, @"\r\n(\d+)\r\n(\d+)").Groups[2].Value;
string y1 = y1 = Regex.Match(l, @"\r\n(\d+)\r\n(\d+)\r\n(\d+)").Groups[3].Value;
string x2 = x2 = Regex.Match(l, @"\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)").Groups[4].Value;
string y2 = y2 = Regex.Match(l, @"\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)").Groups[5].Value;
string x3 = x3 = Regex.Match(l, @"\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)").Groups[6].Value;
string y3 = y3 = Regex.Match(l, @"\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)\r\n(\d+)").Groups[7].Value;
{
//convert string to int for redacted points
int x1value = Convert.ToInt32(x1);
int y1value = Convert.ToInt32(y1);
int x3value = Convert.ToInt32(x3);
int y3value = Convert.ToInt32(y3);
{
//BEGIN Workaround for indexed pixels
Bitmap original = (Bitmap)System.Drawing.Image.FromFile(YOURFILE, true);
Bitmap newImage = new Bitmap(original);
pictureBox1.Image = newImage; //END Workaround for indexed pixels
using (Graphics g = Graphics.FromImage(pictureBox1.Image)) //start redaction
{
using (SolidBrush brush = new SolidBrush(Color.Black))
{
g.DrawImageUnscaled(newImage, 0,0);
g.FillRectangle(brush, new Rectangle(x1value, y1value, x3value, y3value));
}
} //End Redaction
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; //Resized to fit into a static picturebox
}
}
« comment je peux rendre cela plus clair » -> Commençons par un-indenting le code source un peu. –