Texte pas dans une textbox [Résolu]

Signaler
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011
-
 seb4stien13 -
Salut,
Alors je vous explique mon problème, J'ai une image comme background et je souhaiterais que mon texte apparaissent sur l'image sans la zone blanche et que l'on puisse voire entre les lettre l'image !

Merci d'avance !

32 réponses

Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
5
Oops !
J'avais pris pour tester une image dans "MesDocuments".
Le bon code est donc celui-là :

Public Class Form2

    Private imageDeFond As New Bitmap("image01.jpg")    
    'L'image doit se trouver pour l'exemple dans le dossier de l'exécutable 
    'mais on pourrait aussi la mettre en ressources

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '
    End Sub

    Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim maFonte As New Font("Microsoft Sans Serif", 12, FontStyle.Bold)
        'Dessiner l'image
        e.Graphics.DrawImage(imageDeFond, 0, 0, imageDeFond.Width, imageDeFond.Height)
        'Dessiner le texte "Coucou", avec maFonte, en noir, à la position (10,100)
        e.Graphics.DrawString("Coucou", maFonte, Brushes.Black, 10, 100)
    End Sub

End Class
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Salut, apparemment il n'y a pas de
propriété BackgroundImage sur les TextBox
& RichTextBox (je me demandais si c'était
disponible dans les versions Pro de Visual Basic .net ...)
Alors ce qui est possible c'est d'utiliser
un évenement KeyPress pour dessiner sur l'image
donc avec un code comme ceci :
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

Dim g As Graphics = PictureBox1.CreateGraphics
g.DrawString(e.KeyChar, Me.Font, Brushes.Black, 1, 1)
g.DrawString(e.KeyChar, Me.Font, Brushes.White, 2, 2)

End Sub

Après, à toi de programmer pour obtenir ce que tu
souhaite faire Bonne prog
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

PS : J'ai oublié de commenter les lignes :
g.DrawString(e.KeyChar, Me.Font, Brushes.Black, 1, 1)
'' 1er argument : la touche du clavier pressée
'' 2ème : la police de caractère à utiliser
'' 3ème : la couleur
'' 4ème et 5ème : les coordonnées en pixels
'' du coin supérieur gauche de la lettre à dessiner
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Merci de ta réponse mais j'ai oublié de préciser que le texte est fixe il ne changeras pas !
(Je vais essayer et merci beaucoup)
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Bah dans ce cas là tu peux faire :
g.DrawString("Le texte", Me.Font, Brushes.Black, 1, 1)
Salut
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Merci mais je le place ou ? ^^
Car il ne fait référence a aucune label !

Merci de tes réponse rapide.
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Sur une PictureBox, sinon si tu veux le placer
la Form remplace la ligne
Dim g As Graphics = PictureBox1.CreateGraphics
par
Dim g As Graphics = Me.CreateGraphics
Donc pour dessiner sur la Form au lieu d'une PictureBox1
Ensuite pour placer le texte à la bonne position
tu devra spécifier la position en pixels :
g.DrawString("Le texte à dessiner", Me.Font, Brushes.Black, 10, 20)
Donc dans cette ligne le texte est dessiné à la
position 10;20 ce qui signifie que le coin supérieur gauche
de Le texte à dessiner sera positionné à 10 pixels de
la bordure gauche de la form ou de la picturebox
et à 20 pixels de la bordure en haut de la form ou de la picturebox
Voilà, si tu as d'autres questions ...
Bonne soirée
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Merci je te dit si sa marche demain !
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Salut, J'ai essayer je ne crois pas que sa marche regarde mon code :

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim g As Graphics = PictureBox8.CreateGraphics
        g.DrawString("sssssssssssssss", Me.Font, Brushes.Black, 2, 2)
        End sub


Merci
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Ca devrai marcher...
Normalement sssssssssssssss de couleur noir devrais
être dessinée sur le PictureBox8 dans le coin
supérieur gauche, à 2;2 pixels...
Le problème vient soit du fond de la PictureBox8
qui, si il est noir on ne verrais rien,
ou soit la lettre dessinée est trop petite
et ne se vois pas, donc regarder le 2ème argument, Me.font
qui renvoie la propriété Font de la Form (Me),
agrandir un peu la taille de la police de caractères
de cette Form, je ne connais pas trop l'utilisation des
Font c'est pour ça que dans mon exemple, j'ai choisis
une Font déjà existante, celle de la Form (Me).
Sinon si malgré tout ça ça ne fonctionne pas,
l'image dans le PictureBox8 est dans la propriété
BackGroundImage ou Image ?
Salut
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

J'ai essayer avec BackGroundImage et Image sa ne fonctionne pas avec les 2
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
5
Vire le Background et utilise l'évènement Paint.
Comme ça :

Public Class Form2

    'Private imageDeFond As New Bitmap("image01.jpg")
    Private imageDeFond As New Bitmap(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\image01.jpg")
    'L'image doit se trouver pour l'exemple dans le dossier de l'exécutable 
    'mais on pourrait aussi la mettre en ressources

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '
    End Sub

    Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim maFonte As New Font("Microsoft Sans Serif", 12, FontStyle.Bold)
        'Dessiner l'image
        e.Graphics.DrawImage(imageDeFond, 0, 0, imageDeFond.Width, imageDeFond.Height)
        'Dessiner le texte "Coucou", avec maFonte, en noir, à la position (10,100)
        e.Graphics.DrawString("Coucou", maFonte, Brushes.Black, 10, 100)
    End Sub

End Class
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Merci sa marche et juste comment je change la police et la taille !

Merci beaucoup a vous deux !
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Et dernière parenthèse que j'ai oublié : Si je change le .exe d'endroit l'image sera toujours trouver ?
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Oups encore oublié de demander (Tkt c'est la derniere ) : On peut mettre des lien dedans ?
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Non, quand tu déclare :
Private imageDeFond As New Bitmap("image01.jpg")
ça sous-entends que c'est le fichier image01.jpg
qui se trouve dans le dossier de l'exe.
Si tu veux mettre une image incluse au projet,
je t'ai déjà expliqué, propriétés du projet puis
onglet Ressources là tu ajoute une image puis tu l'utilise comme ceci :
Private imageDeFond As Bitmap = My.Resources.nom_du_fichier
par exemple, salutations.
Messages postés
46
Date d'inscription
samedi 6 novembre 2010
Statut
Membre
Dernière intervention
19 mai 2011

Merci beaucoup
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
5
Pour la police, tu la changes comme ceci :

 Dim maFonte As New Font("Microsoft Sans Serif", 12, FontStyle.Bold)


Nom de la police : Microsoft sans Serif
Taille : 12 points
Style : ici en gras FontStyle.Bold, normal FontStyle.Regular

Pour l'image le mieux est de la stocker en ressources :
1) Tu cliques le menu "Projet" et sélectionnes "Propriétés de l'application"
2) Tu cliques l'onglet "Ressources" puis "Ajouter une ressource" et sélectionnes "Ajouter un ficher existant".
3) Tu sélectionnes ton image et elle s'ajoute au projet (elle sera intégrée à l'application).
4) Il ne te reste plus qu'à modifier la ligne affichant l'image de cette façon :

e.Graphics.DrawImage(My.Resources.Image01, 0, 0, imageDeFond.Width, imageDeFond.Height)
Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

Ha et pour ajouter un lien c'est possible,
alors dans ce cas il faudrait gérer ça dans l'évenement
MouseDown ou tu peux récupérerla position de la souris
avec 'e' , comme ceci si tu veux voir ce que ça donnes,
met cette ligne dans l'évenement MouseDown de ta PictureBox :
MsgBox("Position = " & e.X & ";" & e.Y)
donc toujours en pixels, salut.
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
5
Post scriptum :
Tu peux aussi afficher le texte dans un rectangle sur plusieurs lignes :
e.Graphics.DrawString("Coucou" & vbCrLf & "les amis !", maFonte, Brushes.Black, New Rectangle(10, 100, 200, 50))


Post scriptum number 2 :
Plus on ajoute de choses dans les ressources et plus la compilation du programme est longue. C'est bon à savoir...