Accueil > Forum > > > > appel de fonction Paint
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;
|
|
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
Livres en rapport
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|