Voici un petit exemple qui a clarifié quelques choses pour moi (je luttais avec cela un peu trop).
Pbox est un PictureBox sur Form1, font au moins 50x50
appPath a été dérivé de System.Reflection mais utiliser le chemin que vous aimez
Il y a deux boutons, un pour le dessin, l'un pour l'enregistrement, leurs événements de clic sont dans le code ci-dessous.
que j'ai appris:
(1) « pBox.Image = » ne fait rien, mais initialiser l'image Pbox, il ne doit pas être un nom de fichier comme chaque exemple que j'ai trouvé utilisé (problème avait sauver à ce même fichier, car il était partagé). De même, si votre objectif est de voir des choses sur la surface entière du contrôle, vous voudrez probablement définir la taille au moment de l'initialisation à la taille dont vous avez besoin. J'ai utilisé la taille de la pBox dans cet exemple mais normalement j'utilise la taille de bitmap (parce que je commence généralement avec un vrai fichier d'image). (2) J'ai toujours eu des problèmes, soit voir mes dessins apparaître sur le contrôle ou voir mes modifications enregistrées dans le fichier de sortie (ou les deux). Dans mes tentatives précédentes, je voudrais dupliquer les tirages à la fois sur le contrôle et sur l'image bitmap. Bien sûr, ce n'est pas nécessaire, mais le bitmap édité DOIT être rechargé dans control.image ... et C'EST le morceau de ce puzzle qui me manquait.
(A) Créer une image bitmap de la control.image et tirer sur le bitmap
(B) Chargez le bitmap dans le control.Image (afin que vous puissiez voir les changements causés par le tirage au sort)
(C) Enregistrez le control.Image
(2-option) Vous disposez d'un bitmap global (ou passé) (probablement à partir d'un fichier réel)
(a) Dessiner sur le bitmap
(B) Charger le bitmap dans le control.Image (vous pouvez donc voir les changements)
(C) Enregistrez le bitmap
public Form1()
{
InitializeComponent();
pBox.Image = new Bitmap(pBox.Width, pBox.Height);
}
private void DrawStuff1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pBox.Image);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Red, 5, 5, 25, 25); //hard-coded size to reduce clutter
pBox.Image = bmp; //this makes your changes visible
}
private void Save_Click(object sender, EventArgs e)
{
pBox.Image.Save(appPath + "SavedImage.bmp");
}
Salut Pouvez-vous clarifier/donner un exemple? – tguclu