Handle d'un picture et flexgrid

monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007 - 13 mars 2007 à 00:01
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007 - 13 mars 2007 à 16:19
salut,
j'ai une petite question
j'ai gardé un bout de code téléchargé jadis sur le site vbfrance. Ce code (module) créer un bitmap à parti d'un tableau contenant la couleur du pixel en fonction des coordonnées x et y de ce pixel.
Je ne comprends pas grand chose à ce code qui utilise de nombreuses api mais j'ai tout de même compris qu'il retournait le handle d'un picture.

dans le corps de mon programme, je souhaite utiliser les bitmaps créer pas ce module pour les inclure dans les cellules d'un flexgrid.

la solution que j'ai trouvée est de stockée ce bitmap dans la propriété picture d'un picturebox invisible.
copier cette picture dans le clipboard puis copier le clipboard dans la cellule.

je trouve cette solution inélégante et par souci de compréhension et d'apprentissage de vb, je souhaite pouvoir utiliser directement le handle de mon bitmap pour dessiner dans les cellules de ma flexgrid.
oui mais comment faire?

remarque: il peut être surprenant de copier le picture dans le clipboard pour ensuite copier le clipboard.picture dans la cellule. C'est la seule solution que j'ai jugée acceptable car je remplis plusieurs cellules.
Je m'explique: en faisant set magrille.cellpicture=picturebox.picture cela fonctionne, bien sûr. mais quand je redefinit la propriété picture de ma picturebox, ce sont toutes les cellules déjà dessinées qui s'en trouvent changées avec la nouvelle picture. En passant par le clipboard, les cellules antérieurement dessinées ne sont pas modifiées par le remplissage des nouvelles.

j'attends vos lumières

monsieurlémouche

5 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 mars 2007 à 08:18
Bonjour,

Est-ce ceci, que tu chercherais ?

Option Explicit


Private Sub Form_Load()
    Dim lWidth&, lHeight&
    Call GetPicSize(Me, "d:\superdeb.jpg", lWidth, lHeight, vbPixels)
End Sub


Sub GetPicSize(Frm As Form, sPath As String, ByRef lWidth As Long, ByRef lHeight As Long, Optional iScale As Integer = vbTwips)
    Dim ObjStd As New StdPicture
    Picture1.AutoRedraw = True
    Set ObjStd = LoadPicture(sPath)
    lWidth = Me.ScaleX(ObjStd.Width, vbHimetric, iScale)
    lHeight = Me.ScaleY(ObjStd.Height, vbHimetric, iScale)
    Picture1.PaintPicture ObjStd, 0, 0, Picture1.Width / 15, Picture1.Height / 15, 0, 0, lWidth, lHeight
    Set ObjStd = Nothing
End Sub


 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 mars 2007 à 08:26
Et, si tu n'as pas besoin de modifier les dimensions, ma foi

Private Sub Command1_Click()
    Dim ObjStd As New StdPicture
    Picture1.AutoRedraw = True
    Picture1.AutoSize = True
    Set ObjStd = LoadPicture("d:\superdeb.jpg")
    Picture1.PaintPicture ObjStd, 0, 0, , , 0, 0
    Set ObjStd = Nothing
End Sub
0
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
13 mars 2007 à 12:40
salut,
merci de ta réponse.
j'ai sans doute pas été clair dans ma question.

j'ai un module qui crée un bitmap et qui renvoie le handle de ce bitmap (j'avoue ne pas y comprendre grand chose mais je crois que c'est bien ce qui se passe)

j'aimerais pouvoir utiliser ce handle pour remplir la cellule de ma flexgrid.

cela ressemblerait à ceci:

magrille.cellpicture=GetObjet(handle du bitmap)

mais bien sûr, une telle fonction n'existe pas (en tout cas pas à ma connaissance).

quelle est donc la solution? En effet, pour dessiner dans une cellule de flexgrid, l'objet doit être un bitmap, un métafichier et...
j'ai bien un bitmap (son handle) mais comment y faire référence pour dessiner dans la cellule du flexgrid?

voila

monsieurlémouche
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 mars 2007 à 13:51
Ah ?...


Je croyais avoir répondu, pourtant.... mais bon... si le paintpicture fait oublier l'essentiel (ici ObjStd), n'en parlons donc plus.
0

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

Posez votre question
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
13 mars 2007 à 16:19
salut,
oh la la, faut pas se vexer, surtout pas.
je suis seulement débutant et il est tout à fait possible que les subtilités m'aient échappé.

toutefois, lors du survol de ton code  je n'ai vu ni allusion à une flexgrid et j'ai vu l'instruction LoadPicture(sPath) (avec sPath=string) ce qui m'a fait penser que le code ne répond pas à mes attentes, ce dont pas ailleurs tu n'as pas à te sentir accusé.

je revois le code un peu plus tard car je suis un peu pris pour l'instant et repost.

monsieurlémouche
0
Rejoignez-nous