Roundrect en pointillée

Résolu
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006 - 14 juin 2003 à 04:17
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006 - 9 août 2003 à 00:18
Salut

je cherche déseperement le moyen de dessiner un rounded rectangle en pointillée grace à l'api roundrect.
Vous me dirait de mettre la propriété drawstyle de ma form à 2, mais cela ne me convient pqs car les points sont trop espacés (je sais je suis difficile).

Bref y a-t-il une API qui gère l'espacement des points

Merci

Kelpan

7 réponses

cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
14 juin 2003 à 16:11
j'ai enfin trouvé ouf !!!

merci de m'avoir mis sur la piste avec l'API createPen shareVB

En fait il faut definir son LOGBRUSH
et utiliser l'API extCreatePen

pour ceux ke ça interresse voici la soluce :

Private Declare Function ExtCreatePen Lib "gdi32" (ByVal dwPenStyle As Long, _
ByVal dwWidth As Long, _
lplb As LOGBRUSH, _
ByVal dwStyleCount As Long, _
lpStyle As Long) As Long

Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long

Private Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long

Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, _
ByVal hObject As Long) As Long

Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Type LOGBRUSH
lbStyle As Long
lbColor As Long
lbHatch As Long
End Type

Const PS_USERSTYLE = 7
Const PS_GEOMETRIC = &H10000

Dim hRPenOld As Long
Dim hPen As Long
Dim lB As LOGBRUSH
Dim Lstyle(1) As Long

lB.lbColor = rgb(128,128,128)
lB.lbStyle = BS_SOLID
lB.lbHatch = 0

Lstyle(1) = 2

hPen = ExtCreatePen(PS_GEOMETRIC Or PS_USERSTYLE, 1, lB, 1, Lstyle(1))

hRPenOld = SelectObject(hdc, hPen)

RoundRect hdc, x1,y1,x2,y2,x3,y3

SelectObject hdc, hRPenOld

DeleteObject hPen

Voila

Kelpan
3
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 juin 2003 à 11:46
salut

pour cela il faut créer un pen :
dim hRPen as long
hRPen = CreatePen(PS_DOT, 5, vbBlue) 'point 5 bleus

avoit un device context : par ex :me.hdc

remplacer le pinceau par celui créé
dim hRPenOld as long
hrpenold = SelectObject(Me.hdc, hRPen)

dessiner roundrect(....

on remplace le pinceau créé par l'original
SelectObject Me.hdc, hRPenOld

on supprime le pinceau créé :
DeleteObject hrpen

normalement tout est revenu dans l'ordre et on a un roundrect sur la feuille

si tu veux garder les pointillés tu arretes le code que j'ai donné à roundrect(.....

pour les constantes et déclaration d'api je te laisses les trouver dans la visionneuse d'api

voila

ShareVB
0
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
14 juin 2003 à 14:46
Merci de m'avoir répondu

Mais le problème reste toujours le meme, les points sont toujours des petits tirets trop espacés à mon gout.

Faut-il associer d'autres constantes avec PS_DOT et si oui lesquelles ?

Kelpan
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
14 juin 2003 à 16:24
salut

tu peux aussi utiliser :
PS_DASH,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME

sinon tu peux utiliser la fonction ExtCreatePen avec PS_USERSTYLE et un tableau contenant les "mensuration" de ta ligne pointillée

je n'est pas d'exemple : je te laisse regarder dans msdn

sinon y a pas d'autres solutions

voila

ShareVB
0

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

Posez votre question
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
14 juin 2003 à 16:31
On peut meme rapprocher les points comme ceci

dim lstyle(2) as long

lstyle(1)=0.5
lstyle(2)=2

hPen = ExtCreatePen(PS_GEOMETRIC Or PS_USERSTYLE, 1, lB, 2, Lstyle(1))

Merci pour ton aide ShareVB

@++

Kelpan
0
Kilian38 Messages postés 1 Date d'inscription vendredi 8 août 2003 Statut Membre Dernière intervention 8 août 2003
8 août 2003 à 23:54
:big) Bonjour

Salut quelqu'un peut m'aider a mettre les bots sur mon ordi je ne sais aps coment faire :sad) svp!!
0
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
9 août 2003 à 00:18
Bonjour,

J'ai beau réflechir, je ne comprends pas ta question.

C'est quoi un bot ?

Kelpan
0
Rejoignez-nous