VB 2005, dessiner sur le bureau

Résolu
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012 - 16 déc. 2008 à 14:47
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012 - 8 janv. 2009 à 13:53
Bonjour à tous, je travaille actuellement sur un petit logiciel capable de dessiner sur le bureau à l'instar de gribouille.

Je suis tombé sur beaucoup de codes permettant ceci mais ils étaient soient en C (et donc incompréhensible pour moi), soit en VB6 (et certaines fonctions n'existent plus sous VB 2005)

Mon application consistait à afficher une picturebox dans une form transparente (grâce à la propriété opacity) à 80%, qui prenait tout le bureau, et qui me permettait de "dessiner sur le bureau", mais en réalité on dessinait sur la picturebox quasi transparente... Et cette option représente plusieurs limites :
<li>Les tracés sont eux aussi transparents à 80%</li><li>Lorsqu'on met la form transparente à 100%, c'est comme si elle n'existait plus</li>J'ai donc laissé ma form bien apparente, mais mis ma picturebox en transparent, et rebelotte, c'est comme si on avait un "trou" dans la form, on ne peut plus dessiner dessus... Ma question est claire :
<li>Est-ce que le procédé que j'applique est bien adéquat ?</li><li>Est-ce qu'il existe d'autres solutions ?
</li>

10 réponses

lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
16 déc. 2008 à 15:33
Bonjour,

Juste un petit exemple, je te laisse le soin de dessiner ce que tu veux :

  Private Declare Auto Function GetDesktopWindow Lib "user32.dll" () As IntPtr

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim graph As Graphics = Graphics.FromHwnd(GetDesktopWindow)
        graph.FillRectangle(Brushes.Aqua, 0, 0, 100, 200)

    End Sub

Bonne Prog
3
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
18 déc. 2008 à 18:19
Yop,

Je t'explique un petit peu :
Pour dessiner en vb2005, il te faut récupérer une "surface" à dessiner.

Dim graph As Graphics = Graphics.FromHwnd(GetDesktopWindow)

GetDesktopWindow te permet de récupérer l'handle du bureau et
Graphics.FromHwnd te permet de récupérer la "surface" associé au handle fourni (donc dans notre exemple la surface du bureau)

Ensuite, il existe plusieurs méthodes dans la classe Graphics qui te permettront de dessiner des rectangle, lignes, courbes etc.
Je te laisse te renseigner sur cette classe et parcourir les multiples sources présentes sur ce site.

Petit précision : Ce que tu souhaiterais c'est pouvoir dessiner avec ta souris sur le bureau? Je ne connais pas gribouille et tu n'as pas donner beaucoup de renseignement sur ton projet.

Je reste à disposition si tu as besoin d'aide.
Bonne Prog
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 déc. 2008 à 15:04
Salut,

Voici une source en c#
http://www.codeproject.com/KB/cs/DrawWithMouse.aspx#DrawingontheScreen10

Le code vb2005 ent decoulera sans trop de probleme.
(c'est pas complexe si tu as des pbs utilisent reflector pour finir la traduction)

Apres a toi de gerer pour dessiner directement sur le bureau et non dans un second temps comme dans l'applicaiton.

Bon coding
0
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
18 déc. 2008 à 16:36
Merci pour vos réponses :

nhervagault, je suis dejà arrivé à ce résultat ^^ le problème serait de le faire sur le bureau (et donc hors de la form)

lesdis, celà m'a l'air d'être un début de réponse mais seulement je ne vois pas comment je peux dessiner quelque chose...

Désolé, je suis en première année de BTS et je ne vois pas comment exploiter ce code... Honte à moi !

Néanmoins j'accèpte cette réponse qui me rapproche d'un résultat ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
20 déc. 2008 à 14:54
Merci encore pour ton aide et oui en effet, ce que je souhaiterai c'est dessiner sur mon bureau...

Gribouille est donc un logiciel gratuit telechargeable sur le net, qui m'en a donné l'idée mais qui est tres limité...

Je vais travailler desssus, joyeuses fêtes !
0
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
6 janv. 2009 à 15:39
Bonne année et re-bonjour dans le casse tête de la semaine...

J'ai bien compris ce que tu m'as gracieusement offert, mais pour ce qui est de l'exploiter...

En clair, je récupère l'accès (le handle) sur le bureau mais... comment dessiner dessus ?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 janv. 2009 à 15:47
Tu mets graph en variable privée de ta classe et tu dessines dessus apres

graph.DrawRectangle(....)
0
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
7 janv. 2009 à 15:49
Ben oui, mais je n'arrive pas à dessiner dessus... Je ne sais pas ce que j'ai loupé dans l'histoire... Je peux te passer mon prog si tu veux voir ce que j'ai oublié de faire non ?
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
7 janv. 2009 à 16:30
Bonjour et bonne année !

Tu peux toujours nous fournir ton code pour voir ce que tu as fais et te donner des pistes.

Sinon je te conseille en premier d'apprendre a dessiner sur une form ou picturebox. Il y a pleins de sources sur ce sites qui te permettront de te familiariser avec les outils de dessin de VB

Bonne Prog
0
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
8 janv. 2009 à 13:53
Je suis arrivé à dessiner sur unez picturebox, mais je ne vois pas comment utiliser ton code... je fournirait mon code promis ;)
0
Rejoignez-nous