Fondamentalement, Im faire une application de peinture très similaire à MSPaint. L'idée est que l'utilisateur clique n'importe où sur le formulaire et devrait être capable d'écrire du texte dans un contrôle. Et ensuite, ce texte devrait être affiché dans la méthode graphique g.drawstring.Comment dessiner du texte à l'exécution
Répondre
Je ne veux pas faire le tout pour vous, mais voici un aperçu de base d'une façon d'atteindre les objectifs que vous définissez. Ce n'est pas nécessairement le meilleur moyen, mais il devrait vous aider à démarrer et vous présenter un certain nombre de concepts WinForms.
La rédaction du texte
Créer une Form
et ajoutez un contrôle TextBox
à elle. Assurez-vous qu'il est caché par défaut. Remplacez la méthode OnMouseClick
de votre Form
et ajoutez le code qui vérifie si le TextBox
est visible et si non, le montre et met l'accent dessus pour que l'utilisateur entre leur texte. Si le TextBox
est déjà visible, le code doit le masquer et créer un nouveau UserControl
à sa place qui affiche le texte (voir ci-dessous pour les détails de ce UserControl
).
Ajoutez également un gestionnaire d'événements au TextBox
de sorte que si l'utilisateur clique sur Esc, il annule l'édition et s'il appuie sur Entrée, le texte est accepté et le UserControl
est créé.
Afficher le texte
Créer une UserControl
et assurez-vous que les styles sont fixés UserPaint
et Opaque
dans sa construction (voir SetStyle
- vous pouvez également envisager OptimizedDoubleBuffer
et AllPaintingInWmPaint
car cela peut réduire vacillante si elle ne nécessite code de peinture supplémentaire). Remplacez la méthode OnPaint
dans votre UserControl
et implémentez le code pour dessiner la chaîne (rappelez-vous, vous aurez également besoin d'un moyen de définir le texte sur le contrôle).
Conclusion
Si vous accrochez à tout cela, vous devriez avoir quelque chose qui semble répondre à vos besoins. Pour plus d'expérimentation, considérez comment vous pouvez supprimer le besoin du UserControl
. Bonne chance et amusez-vous bien!
Beau travail .. – nothrow