Inserer une image dans un richtextbox à la position de son choix

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 825 fois - Téléchargée 29 fois


Contenu du snippet

Bon voila, je fais une sorte de client pour un chat qui utilise pas mal les smileys, j'ai donc trouver necessaire d'ajouter la possibilité de voir ces dernier.
le probleme etant que j'utilise un richtextbox pr l'affichage des msg (pour la gestion des couleurs et des polices, c simpa), mais celui-ci ne comporte pas d'instruction capable d'inserer une image... le controle gerant pourtant du RTF, format qui supporte les image, ce que l'on peut voir lorsqu'on colle le contenu de clipbaord dans un controle richtextbox. c'est donc en partant de ça et sans vraiment me casser la tete que j'ai ecrit ce petit bout de code permettant d'ajouter une image à la position de son choix, et sans gener les selections faites par l'utilisateur dans ce controle (vu que les selections sont importantes pr gerer le multicouleur, multitaille).
voila pr la fabuleuse histoire (.............)
donc bon, je sais bien, c'est vraiment pas propre de jouer avec le clipboard comme ça...mais si qq1 a une autre idée, bah je dois avouer que ca me tente bien...

Source / Exemple :


' ajoutez cette classe a votre projet:

Public Class Class_DrawRtb
    Public Sub add_pictures_to_rtb(ByVal pic As Image, ByVal rtb As RichTextBox, ByVal index As Integer)
        Dim x As Clipboard
        Dim a As Integer
        Dim b As Integer
        Dim tmpobj As Object
        tmpobj = x.GetDataObject
        x.SetDataObject(pic)
        a = rtb.SelectionStart
        b = rtb.SelectionLength
        rtb.SelectionLength = 0
        rtb.SelectionStart = index
        rtb.Paste()
        x.SetDataObject(tmpobj)
        If index >= a Then a += 1
        rtb.SelectionStart = a
        rtb.SelectionLength = b
    End Sub
End Class

'et vous appeler la fonction comme ceci, dans n'importe quel autre fichier de votre projet :

Dim a As New Class_DrawRtb()
 a.add_pictures_to_rtb(New Bitmap("le_chemin_de_fichier"), RichTextBox1, RichTextBox1.SelectionStart)  
'ou si vous ajoutez les images en reference a votre prog :
Dim a As New Class_DrawRtb()
dim formz1 as form1 = new form1
 a.add_pictures_to_rtb(New Bitmap(formz1.GetType.Assembly.GetManifestResourceStream("NomdeProjet.image.bmp)"), RichTextBox1, RichTextBox1.TextLength) ' (en respectant la casse)

'd'ailleurs je voudrais bien acceder a des references sans definir la form... c possible?

Conclusion :


heu... critiquez donc, en general ça fait avancer les choses.
et je me repete :
"si qq1 a une autre idée, bah je dois avouer que ca me tente bien..."

A voir également

Ajouter un commentaire Commentaires
Messages postés
60
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 novembre 2011

Loll, la meilleur façon : utilisez le contrôle webbrowser :p
Messages postés
5
Date d'inscription
dimanche 19 février 2012
Statut
Membre
Dernière intervention
25 mai 2012

Pas mal
Messages postés
60
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
15 novembre 2010

je voi que personne ne repond mais c'est bon j'ai comprie par moi même.

merci quand même .

seul truc on ne peux pas afficher une imge la ou on veux ? ( en haut à hauche en bas a droite ... )
Messages postés
60
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
15 novembre 2010

c'est encore moi dsl je susi débutant,

quelqu'un peux t-il m'expliquer cette ligne :

a.add_pictures_to_rtb(New Bitmap("C:\Users\Public\Pictures\Sample Pictures\Manchots.jpg"), RichTextBox1, RichTextBox1.SelectionStart)

et comment définir la postion de l'image pour en affichier plusieur en même temps dans le richtexbox ( exemple une en haut à doirt une juste a coté une en dessou une en bas à gauche une juste avant ..... )

merci
Messages postés
60
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
15 novembre 2010

RE je pensse avoir résolue le probleme, j'ai supprimer le dim x as Clipboard
et j'ai remplacer tout les x par Clipboard et la il ne me dit plus aucune erreur.


et j'ai une autre question comment on définie la position de l'image dans le richtextbox ???
merci moi c'est pas pour un tchatch mais je voudrais par exemple mettre plusieur imae dans un richtextbox et choisir leur position par rappord à une autre.

merci
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.