Texte pas dans une textbox

Résolu
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011 - 8 nov. 2010 à 20:26
 seb4stien13 - 17 nov. 2010 à 16:14
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

mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
9 nov. 2010 à 17:19
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
3
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
8 nov. 2010 à 20:48
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
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
8 nov. 2010 à 20:51
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
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
8 nov. 2010 à 20:58
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)
0

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

Posez votre question
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
8 nov. 2010 à 21:00
Bah dans ce cas là tu peux faire :
g.DrawString("Le texte", Me.Font, Brushes.Black, 1, 1)
Salut
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
8 nov. 2010 à 21:16
Merci mais je le place ou ? ^^
Car il ne fait référence a aucune label !

Merci de tes réponse rapide.
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
8 nov. 2010 à 21:25
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
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
8 nov. 2010 à 21:28
Merci je te dit si sa marche demain !
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
9 nov. 2010 à 16:54
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
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
9 nov. 2010 à 17:04
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
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
9 nov. 2010 à 17:14
J'ai essayer avec BackGroundImage et Image sa ne fonctionne pas avec les 2
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
9 nov. 2010 à 17:17
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
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
9 nov. 2010 à 17:29
Merci sa marche et juste comment je change la police et la taille !

Merci beaucoup a vous deux !
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
9 nov. 2010 à 17:32
Et dernière parenthèse que j'ai oublié : Si je change le .exe d'endroit l'image sera toujours trouver ?
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
9 nov. 2010 à 17:39
Oups encore oublié de demander (Tkt c'est la derniere ) : On peut mettre des lien dedans ?
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
9 nov. 2010 à 17:41
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.
0
angelblood Messages postés 46 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 19 mai 2011
9 nov. 2010 à 17:42
Merci beaucoup
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
9 nov. 2010 à 17:46
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)
0
raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
9 nov. 2010 à 17:49
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.
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
9 nov. 2010 à 17:51
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...
0
Rejoignez-nous