begin process at 2010 02 09 21:31:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

appel de fonction Paint


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

appel de fonction Paint

lundi 19 mai 2008 à 12:02:18 | appel de fonction Paint

dod0

bonjour, je suis débutant en C# et j'essai de créé une cible qui suit mon curseur j'y arrive très bien le probléme est que ma méthode demande trop au processeur donc j'aimerais savoir comment faire pour résoudre sa et est-ce que c'est mon programme qui est pas bon? car j'ai pensé appeler ma fonction panel3_Paint dans ma fonction panel1_MouseMouve ?

voilà mon code ...

Point Depart = newPoint();
Pen pen = newPen(Color.Black);

private void panel1_MouseMove( object sender, MouseEventArgs e)
{
      Panel p = sender as Panel ;

      if (e.Button == MouseButtons .Left)
      {
            Point mousePos = this .PointToClient( Control .MousePosition);

                  if (Depart.IsEmpty)
                  {
                        Depart =
new Point (mousePos.X - p.Left, mousePos.Y - p.Top);
                  }
            p.Location =
new Point (mousePos.X - Depart.X, mousePos.Y - Depart.Y);
      }
      
else if (!Depart.IsEmpty)
            Depart =
new Point ();
      }

//********************** création de la cible pour le curseur *************************//

public void panel3_Paint( object sender, PaintEventArgs e)
{
      
Panel p = sender as Panel ;
      
Point mousePos = this .PointToClient( Control .MousePosition);
      e.Graphics.DrawLine(pen, 0, mousePos.Y - p.Top, 1000, mousePos.Y - p.Top);      
      e.Graphics.DrawLine(pen, (mousePos.X - p.Left), 0, mousePos.X - p.Left, 1000);
      
//this.Refresh(); utilise trop de m,moire
}
}
lundi 19 mai 2008 à 14:16:51 | Re : appel de fonction Paint

leprov

déjà tu redessine a chaque fois tes lignes. pourquoi ne pas prédessiner ta "cible" dans le constructeur, et simplement la flusher dans le mousemove. tu devrais déjà gagner un peu. ensuite, au lieu de refresh this, tu peux refresh uniquement la partie qui a besoin d'être refresh (ca doit etre possible avec un appel a invalidate je pense, il me semble qu'on peut choisir un rectangle cible). ainsi tu as juste a invalider la position de lancienne cible, puis a faire ton dessin. Et au lieu d'appeler la méthode paint dans le mousemove, tu dois faire le invalidate la bas.

ainsi, tu override la méthode onpaint ou tu place ton code, puis tu invalide la zone qui a besoin detre repainte dans le mousemove. Au final tu ne dessine pas  a chaque fois mais tu "flush" une image déjà initialisée.


lundi 19 mai 2008 à 14:25:43 | Re : appel de fonction Paint

dod0

Merci de ton aide  sa m'éclaire un peu, je vais essayer d'appliquer sa malgrès que pour moi certaine chose que tu m'explique me sont inconnu comme le invalidate que je ne comprends pas tout à fait :s
mardi 20 mai 2008 à 09:22:36 | Re : appel de fonction Paint

leprov

Invalidate te permet de dire à l'application "telle partie de ma fenetre n'est plus valide et doit etre redessinée". cest assez proche de  ton refresh, sauf que ca va te permettre de travailler uniquement sur les portion nécessaires de ton formulaire. autrement dis, au lieu de redessiner toute la fenetre, tu redessine uniquement la portion qui n'est plus valide (celle ou il y avait ta cible et ou il ne doit plus rien y avoir)


mardi 20 mai 2008 à 10:02:15 | Re : appel de fonction Paint

dod0

d'accord je vois mieux comment l'utiliser maintenant merci beaucoup de ton aide car je galère un peu en C# vu que mon language de départ est le PASCAL. Et la j'ai quelques problémes pour le constructeur pour la création de ma cible car je vois exactement comment créer tous cela mais pas comment faire le "flush" comme tu me l'a indiqué?
 désolé je débute réellement donc je préfére passer pour un vrai novice que rester bloqué
mardi 20 mai 2008 à 10:59:02 | Re : appel de fonction Paint

leprov

tu dois créer une image en temps que données membre de ta classe. dans ton constructeur tu dessine la cible dans ton image avec un fond transparent.

Par contre je suis en train de réaliser : pourquoi ne pas simplement changer le curseur lorsque tu es sur ce formulaire (tout simplement?)


mardi 20 mai 2008 à 11:22:35 | Re : appel de fonction Paint

dod0

ok merci pour l'explication et pour ce que tu pensais quand tu dis "changer le curseur lorsque tu es sur ce formulaire" tu parle de faire par exemple :

Cursor.Current = Cursors.Cross;     ou autre ???


mardi 20 mai 2008 à 11:35:34 | Re : appel de fonction Paint

leprov

oui, mais plutot (vu que tu veux un truc perso) utiliser une image a toi


mardi 20 mai 2008 à 11:48:17 | Re : appel de fonction Paint

dod0

ouais j'y avais pensé mais tu vois mon probleme c'est comment faire pour l'appeler avec cette méthode car l'objet cible par exemple, je n'arrive pas à le créé et l'appeler, je suis pomé car je pense que je me base trop sur ce que j'ai vu avec Delphi, car en delphi j'aurai créé un nouveau composant que j'aurai appelé dans ma fonction principal dois-je faire pareil ici? et si je suis ton résonnement je dois créé ma cible dans le constructeur et après appeler le changement de curseur dans mon Mouse Mouve de mon Panel?
Merci de ta patiente en tout cas car c'est plutot rare sur certains forum
mardi 20 mai 2008 à 11:53:46 | Re : appel de fonction Paint

leprov

Réponse acceptée !
non, en fait il te suffit de créer ta cible dans ton constructeur, puis lorsque tu affecte la cible au curseur du controle concerné (toujours dans le contructeur). si cest pour lensemble de ton formulaire que tu veux ce changer, tu as juste faire this.Cursor = TonCurseur;



1 2

Cette discussion est classée dans : fonction, paint, depart, pen, mousepos


Répondre à ce message

Sujets en rapport avec ce message

Fonction... [ par Acidkepler ] Bonjour, j'ai créer une fonction bonhomme...Quand je clique sur le bouton avancer, mon bonhomme doit avancer ver la droite... mais je n'arrive pas Comment integrer une librairie a mon programme ??? [ par aachatam ] Salut tt le monde, En  cherchant une fonction qui peut remplire une zone delimité dans une image bmp, ( l'equivalent de la fonction de remplissage de Comment stopper un thread lorsqu'il est bloqué par une fonction bloquante [ par billou_13 ] En voila une question que je me pose depuis très longtemps !En fait, je lance un serveur TCP/IP qui attend des clients en faisant la fonction Socket.A fonction MID [ par chris81 ] bonjour, je suis en train de tester C# et je ne trouve pas la fonction MID qui exiqte en VB. Pourriez vous mle dire ou est cette fonction ou sinon par Atteindre ligne dans une RichTxtBox [ par tahiti_bob ] Bonjour,Je suis en train de développer un bloc note un peu comme celui de Window mais avec plein de fonctions supplémentaire (MDI,...)Je voudrais impl Chaine de caractères [ par tahiti_bob ] Bonjour,Je cherche une fonction qui permet de savoir si la chaine de caractère contient par exemple "Error at". C'est l'équivalent de la fonction ereg mail avec piece jointe [ par marliche0 ] Bonjour, je cherche une fonction qui me permet d'envoyer un mail avec des pieces jointes, cette fonction existe-t-elle en c# ou faut-il la developper? Graphics.... [ par emmanuel9 ] Bonjour, En faite j'ai un panel avec un diagramme en batons dedans.  Quand on fait scroller le panel ca scrolle bien les diagrammes à l'interieur, l Numéro de série du volume [ par ] Bonjour,Je cherche une fonction qui me donnerai le numéro de série du volume d'un Disque Dure. Sur le MS-DOS, la fonction est : C:\>vol Merci d’avance [C#] Utilisation de paramètres réels dans une fonction [ par nerix27 ] Bonjour,voilà mon p'tit pb...En fait j'ai une appli de plusieurs milliers de lignes, et mon pc n'est pas trop une bête de course, donc ça rame à fond


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales