Accueil > Forum > > > > [C#] MDI child et MDI parent : Laison
[C#] MDI child et MDI parent : Laison
mardi 12 juillet 2005 à 11:23:07 |
[C#] MDI child et MDI parent : Laison

MickParadiseLost
|
Bonjour a tous,
J'ai une barre d'outils dans ma forme principale et elle contient un pinceau et une gomme.
J'aimerai pouvoir peindre avec mon pinceau dans la mdi child.
Comment on fait svp ?
|
|
mardi 12 juillet 2005 à 12:07:25 |
Re : [C#] MDI child et MDI parent : Laison

aogie
|
Bonjour,
Quand ton bouton de pinceau est enfoncé, une variable de la mainform
indiquera donc qu'on se trouve en mode dessin avec pinceau (ex :
penDrawing = true) et une autre variable contiendra le pinceau
paramétré par l'utilisateur (configuration de la couleur et de
l'épaisseur de trait).
Ensuite, pour le dessin à main levée, il faut surcharger OnMouseMove sur la feuille enfant.
Vérifier que e.Button == MouseButtons.Left. Si c'est le cas, tu mets à
jour par la méthode SetPixel() un bitmap conservé en variable membre,
puis :
- si tu ne travailles pas avec un PictureBox : appel de la méthode
Invalidate(). Dans la surcharge OnPaint(), tu n'as plus qu'à dessiner
le dessin.
ou
- si tu travailles avec un PictureBox : mise à jour de la propriété Image.
-- AOGie --
|
|
mardi 12 juillet 2005 à 23:16:32 |
Re : [C#] MDI child et MDI parent : Laison

MickParadiseLost
|
Oui je travaille sans picturebox parsque j'arrive toujours pas a le faire marcher sinon.
Mais euh je suis vraiment débutant en c# et réaliser ce que tu viens de
me dire c'est impossible pour moi car je comprend bien le principe mais
pour coder les controles utilisateurs, le fait de cliquer sur un bouton
sa provoque une variable, je comprend pas lol.
Parsque en fait, je veux que quand je clique sur le pinceau il se passe:
-la fleche de la souris se transforme en rond.
-dans un panel apparait un champ de saisie pour modifier le diametre du rond de la souris.
-dans ce panel apparait aussi une boite de couleurs (pas d'influence
sur le pointeur de souris mais la couleur du trait sera celle de la
couleur choisie)
-lorsque je clique sur la mdichild a l'endroit du dessin, le trait se
fait comme un vrai pinceau. (quand on a le bouton de souris enfoncé on
dessine, lorsqu'il ne l'est pas sa s'arréte).
si tu peux me faire un exemple sa serait génial et j'aurais pu qu'a le faire pour les autres outils de ma boite a outils.
Merci d'avance
|
|
mercredi 13 juillet 2005 à 09:51:50 |
Re : [C#] MDI child et MDI parent : Laison

aogie
|
Je viens de te faire un exemple pour le dessin à main levée. Pour
changer la couleur du trait, tu double cliques sur le carré de couleur :
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace TestPaint
{
/// <summary>
/// Description résumée de Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private Bitmap
_bmp = null;
private Pen
_pen = null;
private Point
_lastPt =
Point.Empty;
private System.Windows.Forms.CheckBox chk_Pen;
private System.Windows.Forms.Panel pan_Draw;
private System.Windows.Forms.ColorDialog colorDlg;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label lbl_Color;
private System.Windows.Forms.ComboBox cb_PenWidth;
private System.Windows.Forms.Label label2;
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Requis pour la prise en charge du Concepteur Windows Forms
//
InitializeComponent();
_bmp = new Bitmap(pan_Draw.Width, pan_Draw.Height);
_pen = new Pen(Color.Black);
lbl_Color.BackColor = Color.Black;
for (int i = 1; i < 5; i++)
cb_PenWidth.Items.Add(i);
cb_PenWidth.SelectedIndex = 0;
}
/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (_bmp != null) _bmp.Dispose();
if (_pen != null) _pen.Dispose();
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Code généré par le Concepteur Windows Form
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
this.chk_Pen = new System.Windows.Forms.CheckBox();
this.pan_Draw = new System.Windows.Forms.Panel();
this.colorDlg = new System.Windows.Forms.ColorDialog();
this.label1 = new System.Windows.Forms.Label();
this.lbl_Color = new System.Windows.Forms.Label();
this.cb_PenWidth = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// chk_Pen
//
this.chk_Pen.Appearance = System.Windows.Forms.Appearance.Button;
this.chk_Pen.BackColor = System.Drawing.SystemColors.Control;
this.chk_Pen.Location = new System.Drawing.Point(8, 8);
this.chk_Pen.Name = "chk_Pen";
this.chk_Pen.Size = new System.Drawing.Size(64, 24);
this.chk_Pen.TabIndex = 0;
this.chk_Pen.Text = "Pinceau";
this.chk_Pen.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.chk_Pen.CheckedChanged += new
System.EventHandler(this.chk_Pen_CheckedChanged);
//
// pan_Draw
//
this.pan_Draw.Anchor =
((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top
| System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pan_Draw.BackColor = System.Drawing.Color.White;
this.pan_Draw.Location = new System.Drawing.Point(0, 37);
this.pan_Draw.Name = "pan_Draw";
this.pan_Draw.Size = new System.Drawing.Size(456, 280);
this.pan_Draw.TabIndex = 1;
this.pan_Draw.SizeChanged += new
System.EventHandler(this.pan_Draw_SizeChanged);
this.pan_Draw.MouseUp += new
System.Windows.Forms.MouseEventHandler(this.pan_Draw_MouseUp);
this.pan_Draw.Paint += new
System.Windows.Forms.PaintEventHandler(this.pan_Draw_Paint);
this.pan_Draw.MouseMove += new
System.Windows.Forms.MouseEventHandler(this.pan_Draw_MouseMove);
//
// label1
//
this.label1.Location = new System.Drawing.Point(88, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 16);
this.label1.TabIndex = 3;
this.label1.Text = "Couleur :";
//
// lbl_Color
//
this.lbl_Color.Location = new System.Drawing.Point(144, 8);
this.lbl_Color.Name = "lbl_Color";
this.lbl_Color.Size = new System.Drawing.Size(24, 23);
this.lbl_Color.TabIndex = 0;
this.lbl_Color.DoubleClick += new
System.EventHandler(this.lbl_Color_DoubleClick);
//
// cb_PenWidth
//
this.cb_PenWidth.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_PenWidth.Location = new System.Drawing.Point(256, 11);
this.cb_PenWidth.Name = "cb_PenWidth";
this.cb_PenWidth.Size = new System.Drawing.Size(48, 21);
this.cb_PenWidth.TabIndex = 4;
this.cb_PenWidth.SelectedIndexChanged += new
System.EventHandler(this.cb_PenWidth_SelectedIndexChanged);
//
// label2
//
this.label2.Location = new System.Drawing.Point(184, 16);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(64, 16);
this.label2.TabIndex = 5;
this.label2.Text = "Epaisseur :";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(456, 317);
this.Controls.Add(this.label2);
this.Controls.Add(this.cb_PenWidth);
this.Controls.Add(this.lbl_Color);
this.Controls.Add(this.label1);
this.Controls.Add(this.pan_Draw);
this.Controls.Add(this.chk_Pen);
this.Name = "Form1";
this.StartPosition =
System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void chk_Pen_CheckedChanged(object sender, System.EventArgs e)
{
Cursor = (chk_Pen.Checked ? Cursors.Cross : Cursors.Default);
}
#region Evénements pan_Draw
#region pan_Draw_MouseMove
private void pan_Draw_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && chk_Pen.Checked)
{
Point mouse = new Point(e.X, e.Y);
if (_lastPt == Point.Empty) _lastPt = mouse;
float penWidth = _pen.Width;
using (Graphics g = Graphics.FromImage(_bmp))
{
g.DrawLine(_pen, _lastPt,
mouse);
}
//création du rectangle ajusté, de modification
Rectangle rect = new Rectangle(
Math.Min(_lastPt.X, mouse.X),
Math.Min(_lastPt.Y, mouse.Y),
Math.Abs(_lastPt.X - mouse.X),
Math.Abs(_lastPt.Y - mouse.Y)
);
rect.Inflate(5, 5);
pan_Draw.Invalidate(rect, false);
_lastPt = mouse;
}
}
#endregion
#region pan_Draw_SizeChanged
private void pan_Draw_SizeChanged(object sender, System.EventArgs e)
{
//modification du dessin interne
Bitmap bmp = new Bitmap(pan_Draw.Width, pan_Draw.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(_bmp, 0, 0);
}
_bmp = bmp;
}
#endregion
#region pan_Draw_Paint
private void pan_Draw_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
//on dessine uniquement la partie modifiée
e.Graphics.DrawImage(
_bmp,
e.ClipRectangle,
e.ClipRectangle,
GraphicsUnit.Pixel
);
}
#endregion
#region pan_Draw_MouseUp
private void pan_Draw_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
//initialisation du dernier point
_lastPt = Point.Empty;
}
#endregion
#endregion
private void lbl_Color_DoubleClick(object sender, System.EventArgs e)
{
//couleur originale
colorDlg.Color = _pen.Color;
if (colorDlg.ShowDialog() == DialogResult.OK)
{
//assignation de la nouvelle couleur
_pen.Color = colorDlg.Color;
lbl_Color.BackColor = _pen.Color;
}
}
private void cb_PenWidth_SelectedIndexChanged(object sender, System.EventArgs e)
{
//décalage de 1 entre index et valeur affichée
_pen.Width = cb_PenWidth.SelectedIndex + 1;
}
}
}
-- AOGie --
|
|
mercredi 13 juillet 2005 à 22:45:08 |
Re : [C#] MDI child et MDI parent : Laison

MickParadiseLost
|
Oh merci beaucoup pour l'exemple Aogie.
Je vais éssayer d'adapter ceci a mon projet avec mon MDI child.
éh euh toi tu dessine dans un panel, mais moi je dessine directement sur ma fenetre. ça change grand chose ?
|
|
jeudi 14 juillet 2005 à 17:08:06 |
Re : [C#] MDI child et MDI parent : Laison

aogie
|
Non, c'est exactement pareil. Bon code,
-- AOGie --
|
|
Cette discussion est classée dans : mdi, parent, child, pinceau, laison
Répondre à ce message
Sujets en rapport avec ce message
relation MDI child / parent [ par zouzounet ]
bonjour :)tout d'abord, bonnes paques à tous :)j'ai ensuite une tite question qui me tracasse mon code :je suis sur une appli mdi, avec des child... l
C# Fenêtre MDI Parent ET MDI Child à la fois? [ par fdev9 ]
Bonjour, Ma question est assez simple : Est-il possible d'imbriquer les fenêtre MDI ? C'est à dire que ma form3 est le child de ma form2 qui elle m
Accès MDI Parent depuis MDI Enfant ? [ par brejaud ]
Bonjour,Voila , j'ai un problème sur lequel je me casse les dents , et je ne trouve pas la réponse même dans MSDN ...J'ai une fenetre MDI Parent , For
mdi child [ par ull ]
bonjourj'ai créer form1 qui est MdiContainer, et j'ai ajouter menu strip dans le Form1;dans le menu fichier il y a le sous menu Créer, qui est composé
[C#] MDI: passage de paramêtres [ par MickParadiseLost ]
Bonne nuit a tous, J'aimerais connaitre la méthode la plus simple pour pouvoir dessiner dans ma fenetre MDI child lorsque je clique sur un bouton dans
position form child parapport a u form parent [ par bouzazi ]
Salutj'amerai savoir comment recupere la position d'un form child relativement dans la form parent avec c# en visual studio 2005.merci
Fenêtre de base MDI [ par nosil ]
Hello tout le monde... J'ai encore besoin de votre aide si précieuse.... Je travaille avec des fenêtres en MDI. J'ai une MDIParent et des children.
Communication inter-Fenetre (MDI Child vers Parent) [ par Neptune84 ]
Je voudrais faire la chose suivante :WinFormPrinc est la fenetre Parent avec un menu menuItem6. Ce menu ouvre (Création) une fenetre MessageUn. Le pro
Liens entre MDI Child [ par dals ]
Salut à tous ceux qui liront mon msg!!! Je débute en VB .Net et mon soucis est d'arriver à établir un lien entre 2 de mes fenêtre filles... En effet j
Affichage MDI Child [ par maitesn1 ]
Salut tout le monde,j'ai un probleme pour afficher les fenetres enfants d'une mdi.Dans mon MDI j'y ai mais une PictureBox .Si je clique sur un menu qu
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|