Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2011, 16h50   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 41
Points : 12
Points : 12
Par défaut Gdi+, Trait mis en forme

Bonjour

J'utilise la méthode Drawline de GDI+ avec Access 2007 pour tracer une ligne droite
oGdi.DrawLine gX, gY, gX1, gY1, gFileColor, 1, True
True donne une ligne continue et false des pointillés.
J'ai vraiment besoin d'avoir un 3e format, à savoir une ligne formée avec tiret point.
Quelqu'un peut-il me dire si c'est possible et éventuellement m'orienter vers la solution.

Merci d'avance
thermo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 17h42   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Bjr,

Pas prévu dans la version actuelle...

Essaye ceci :

Remplace dans la déclaration de DrawLine, ImageListDrawLine, et PrivDrawLine :
par
Puis dans PrivDrawLine, remplace :
Code :
1
2
    ' Pointilles
    If pDash Then GdipSetPenDashStyle lPen, 1
par
Code :
1
2
    ' Pointilles
    If pDash > 0 Then GdipSetPenDashStyle lpen, pDash
Les valeurs possible de pDash sont celles-ci :
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Pour un tiret simple c'est 1, pour un tiret-point c'est donc 3
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 18h30   #3
Membre éclairé
 
Homme Christophe AUMOITTE
Inscription : octobre 2009
Messages : 254
Détails du profil
Informations personnelles :
Nom : Homme Christophe AUMOITTE
Âge : 43
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : octobre 2009
Messages : 254
Points : 303
Points : 303
Ah Thierry,

Tu resteras toujours la référence pour l'utilisation de la GDIplus.

Cordialement

Christophe
marsouin_89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 16h34   #4
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 41
Points : 12
Points : 12
Par défaut Gdi+ format de trait

Bonjour

Merci d'avoir répondu aussi rapidement, mais je n'ai pas la ligne
If pDash Then GdipSetPenDashStyle lPen, 1
dans privDrawline et donc, ça ne marche pas.
J'utilise le module clGdi32 de DessineExemples-gdi32.
Peut-être que ce n'ai pas la bonne version?

A plus j'espere et merci encore
thermo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 17h41   #5
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Citation:
Envoyé par thermo Voir le message
J'utilise le module clGdi32
alors ce n'est pas gdi+, c'est gdi tout court (ou gdi32)

même manip pour les déclarations "pDash as Long"

mais remplacer :
par
les valeurs possibles sont je crois les mêmes :
Code Valeurs de pDash :
1
2
3
4
5
 
           1           '  -------
           2           '  .......
           3           '  _._._._
           4           '  _.._.._
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 18h30   #6
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 41
Points : 12
Points : 12
Par défaut Gdi+ format de trait

Merci thierry t'es top

Mon éditeur de dessin qui me permet de créer mes schémas pour mon programme de foot est enfin opérationnel. Il ne manque plus que de la mise en forme, mais j'ai tous les éléments qu'il me faut.
Une dernière question, y -a-t' il un paramètre qui me permettrait d'avoir des tirets plus long ? Mais je ne voudrais pas abuser

Encore merci
thermo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 18h58   #7
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Citation:
Envoyé par thermo Voir le message
Une dernière question, y -a-t' il un paramètre qui me permettrait d'avoir des tirets plus long ? Mais je ne voudrais pas abuser
pas prévu non plus

une modif rapide :

1 : re-modifier les déclarations de fonctions :
Code :
1
2
3
4
5
Public Function DrawLine(ByVal pX1 As Long, ByVal pY1 As Long, ByVal pX2 As Long, ByVal pY2 As Long, Optional pPenColor As Long = 0, Optional pPenWidth As Long = 1, Optional pDash As Variant = 0, Optional ByVal pArrowLength As Long) As Boolean
 
Public Function ImageListDrawLine(PImage As String, ByVal pX1 As Long, ByVal pY1 As Long, ByVal pX2 As Long, ByVal pY2 As Long, Optional pPenColor As Long = 0, Optional pPenWidth As Long = 1, Optional pDash As Variant = 0, Optional pArrowLength As Long) As Boolean
 
Private Function PrivDrawLine(ByVal pX1 As Long, ByVal pY1 As Long, ByVal pX2 As Long, ByVal pY2 As Long, Optional pPenColor As Long = 0, Optional pPenWidth As Long = 1, Optional pDash As Variant = 0, Optional pArrowLength As Long, Optional PImage As String = "") As Boolean

2 : Dans PrivDrawLine, remplacer la ligne :
Code :
lNewPen = ExtCreatePen(PS_GEOMETRIC Or [...]
Par :
Code :
1
2
3
4
5
6
7
8
9
10
    If IsArray(pDash) Then
        Dim lcpt As Long
        ReDim ldash(LBound(pDash) To UBound(pDash)) As Long
        For lcpt = LBound(pDash) To UBound(pDash)
            ldash(lcpt) = pDash(lcpt)
        Next
        lNewPen = ExtCreatePen(PS_GEOMETRIC Or 7 Or (gPenAlignMode * PS_INSIDEFRAME) Or gLineCap, pPenWidth, lbr, UBound(ldash) - LBound(ldash) + 1, ldash(LBound(ldash)))
    Else
        lNewPen = ExtCreatePen(PS_GEOMETRIC Or pDash Or (gPenAlignMode * PS_INSIDEFRAME) Or gLineCap, pPenWidth, lbr, 0, ByVal 0&)
    End If
3 : pDash peut alors prendre :
- soit les valeurs prédéfinies 1,2,3,4
- soit un tableau donnant la taille des traits et espaces : array(...) (maxi 16 valeurs)

4 : Par exemple :
Code :
o.DrawLine 10, 10, 100, 10, vbBlue, 1, Array(20, 5,10,5)
donne un trait de longeur 20, un espace de 5, un trait de 10 un espace de 5, et on boucle
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 16h59   #8
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 41
Points : 12
Points : 12
Par défaut Gdi+ format de trait

Salut thierry

Force est de constater que Christophe a raison!!!
Je suis impressionné.

J'ai réussit à tracer des courbes de bezier avec un nombre de points prédéfinis.
Je suis donc obligé de les déclarer en variables(px1, py1, px2, py2 etc) et de les assimiler aux clics de souris. Si je veux faire un tracer en 10 points, Je dois donc déclarer 10 Px et 10 Py. Mais cela fait une programmation à rallonge.
Existe-t' il une méthode permettant de tracer une courbe de bezier quelque soit le nombre de clic de l'utilisateur? (Comme dans word)
A moins que tu aies déjà la solution, inutile de perdre du temps. Après tout, je pose cette fois une question sans y avoir réfléchi. Il n'y a plus de plaisir.

Encore merci, car je n'aurais pas trouvé ça tout seul.
thermo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h50.


 
 
 
 
Partenaires

Hébergement Web