Bonsoir tout le monde
Comment peut on définir les points (x,y) sur un usercontrol qui seront
utilisés comme coordonnées de départ pour l'api DrawText?
Je m'explique:
on imagine que j'ai crée plusieurs rectangle et je veux ecrire dans chacun
d'eux, le probleme c'est que ca marche pas.
pour ecrire le texte j'ai fait quelque chose comme ça:
ret = DrawText(UserControl.hDc, sCaption, Len(sCaption), rct,
DT_CALCRECT) '--calcul les coordonnées du rectangle necessaire
'ensuite differents calculs pour gerer l'alignement
'.....
'UserControl.CurrentX = lngLeft
'UserControl.CurrentY = lngTop
'MoveToEx UserControl.hDc, lngLeft, lngTop, tJ
ret = DrawText(UserControl.hDc, sCaption, Len(sCaption), rct,
DT_SINGLELINE)
mais je n'ai pas reussi.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Hello
Il faut noter que les APIs sont indépendantes des propriétés ScaleMode, ScaleHeight, ScaleWidth, CurrentX et CurrentY, VB gérant les coordonnées de traçage de manière indépendante du GDI.
En ce qui concerne DrawText, le 4ème argument est une structure de type RECT. Cet argument est définit la position du texte (et la zone dans laquelle il doit être tracé).
Pour définir la position, tu peux donc faire comme ceci: 'En supposant que lngLeft et lngTop soient définit en pixels: rct.Left = lngLeft rct.Top = lngTop
'Calcule le rectangle de destination, les coordonnées Left,Top resteront inchangées 'Notons qu'il faut combiner les flags utilisés pour effectuer 'un calcul tout à fait correct du rectangle de destination DrawText UserControl.hDc, sCaption, Len(sCaption), rct, DT_CALCRECT or DT_SINGLELINE
'Trace le texte a la position Left,Top (inchangées par l'appel précédent DrawText(UserControl.hDc, sCaption, Len(sCaption), rct, DT_SINGLELINE
Si lngLeft, lngTop ne sont pas définis en pixels, tu pourra recourir aux méthodes ScaleX, ScaleY de ton usercontrol.
-- François Picalausa
"Flex" a écrit dans le message de news:
Bonsoir tout le monde Comment peut on définir les points (x,y) sur un usercontrol qui seront utilisés comme coordonnées de départ pour l'api DrawText?
Hello
Il faut noter que les APIs sont indépendantes des propriétés ScaleMode,
ScaleHeight, ScaleWidth, CurrentX et CurrentY, VB gérant les coordonnées de
traçage de manière indépendante du GDI.
En ce qui concerne DrawText, le 4ème argument est une structure de type
RECT.
Cet argument est définit la position du texte (et la zone dans laquelle il
doit être tracé).
Pour définir la position, tu peux donc faire comme ceci:
'En supposant que lngLeft et lngTop soient définit en pixels:
rct.Left = lngLeft
rct.Top = lngTop
'Calcule le rectangle de destination, les coordonnées Left,Top resteront
inchangées
'Notons qu'il faut combiner les flags utilisés pour effectuer
'un calcul tout à fait correct du rectangle de destination
DrawText UserControl.hDc, sCaption, Len(sCaption), rct,
DT_CALCRECT or DT_SINGLELINE
'Trace le texte a la position Left,Top (inchangées par l'appel précédent
DrawText(UserControl.hDc, sCaption, Len(sCaption), rct,
DT_SINGLELINE
Si lngLeft, lngTop ne sont pas définis en pixels, tu pourra recourir aux
méthodes ScaleX, ScaleY de ton usercontrol.
--
François Picalausa
"Flex" <flex@yahoo.co.jp> a écrit dans le message de news:
uIOpZjAAFHA.3596@TK2MSFTNGP12.phx.gbl
Bonsoir tout le monde
Comment peut on définir les points (x,y) sur un usercontrol qui
seront utilisés comme coordonnées de départ pour l'api DrawText?
Il faut noter que les APIs sont indépendantes des propriétés ScaleMode, ScaleHeight, ScaleWidth, CurrentX et CurrentY, VB gérant les coordonnées de traçage de manière indépendante du GDI.
En ce qui concerne DrawText, le 4ème argument est une structure de type RECT. Cet argument est définit la position du texte (et la zone dans laquelle il doit être tracé).
Pour définir la position, tu peux donc faire comme ceci: 'En supposant que lngLeft et lngTop soient définit en pixels: rct.Left = lngLeft rct.Top = lngTop
'Calcule le rectangle de destination, les coordonnées Left,Top resteront inchangées 'Notons qu'il faut combiner les flags utilisés pour effectuer 'un calcul tout à fait correct du rectangle de destination DrawText UserControl.hDc, sCaption, Len(sCaption), rct, DT_CALCRECT or DT_SINGLELINE
'Trace le texte a la position Left,Top (inchangées par l'appel précédent DrawText(UserControl.hDc, sCaption, Len(sCaption), rct, DT_SINGLELINE
Si lngLeft, lngTop ne sont pas définis en pixels, tu pourra recourir aux méthodes ScaleX, ScaleY de ton usercontrol.
-- François Picalausa
"Flex" a écrit dans le message de news:
Bonsoir tout le monde Comment peut on définir les points (x,y) sur un usercontrol qui seront utilisés comme coordonnées de départ pour l'api DrawText?
Flex
Merci François Tout est tout de suite plus clair. Après quelques chagements j'ai résolu mon problème. C'etait effectivement au niveau des flags (dt_calcrect) Merci man
"François Picalausa" a écrit dans le message de news:
Hello
Il faut noter que les APIs sont indépendantes des propriétés ScaleMode, ScaleHeight, ScaleWidth, CurrentX et CurrentY, VB gérant les coordonnées de traçage de manière indépendante du GDI.
En ce qui concerne DrawText, le 4ème argument est une structure de type RECT. Cet argument est définit la position du texte (et la zone dans laquelle il doit être tracé).
Pour définir la position, tu peux donc faire comme ceci: 'En supposant que lngLeft et lngTop soient définit en pixels: rct.Left = lngLeft rct.Top = lngTop
'Calcule le rectangle de destination, les coordonnées Left,Top resteront inchangées 'Notons qu'il faut combiner les flags utilisés pour effectuer 'un calcul tout à fait correct du rectangle de destination DrawText UserControl.hDc, sCaption, Len(sCaption), rct, DT_CALCRECT or DT_SINGLELINE
'Trace le texte a la position Left,Top (inchangées par l'appel précédent DrawText(UserControl.hDc, sCaption, Len(sCaption), rct, DT_SINGLELINE
Si lngLeft, lngTop ne sont pas définis en pixels, tu pourra recourir aux méthodes ScaleX, ScaleY de ton usercontrol.
-- François Picalausa
"Flex" a écrit dans le message de news:
Bonsoir tout le monde Comment peut on définir les points (x,y) sur un usercontrol qui seront utilisés comme coordonnées de départ pour l'api DrawText?
Merci François
Tout est tout de suite plus clair.
Après quelques chagements j'ai résolu mon problème. C'etait effectivement
au niveau des flags (dt_calcrect)
Merci man
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de news:
Oe4tu3AAFHA.2032@tk2msftngp13.phx.gbl...
Hello
Il faut noter que les APIs sont indépendantes des propriétés ScaleMode,
ScaleHeight, ScaleWidth, CurrentX et CurrentY, VB gérant les coordonnées
de traçage de manière indépendante du GDI.
En ce qui concerne DrawText, le 4ème argument est une structure de type
RECT.
Cet argument est définit la position du texte (et la zone dans laquelle il
doit être tracé).
Pour définir la position, tu peux donc faire comme ceci:
'En supposant que lngLeft et lngTop soient définit en pixels:
rct.Left = lngLeft
rct.Top = lngTop
'Calcule le rectangle de destination, les coordonnées Left,Top resteront
inchangées
'Notons qu'il faut combiner les flags utilisés pour effectuer
'un calcul tout à fait correct du rectangle de destination
DrawText UserControl.hDc, sCaption, Len(sCaption), rct,
DT_CALCRECT or DT_SINGLELINE
'Trace le texte a la position Left,Top (inchangées par l'appel précédent
DrawText(UserControl.hDc, sCaption, Len(sCaption), rct,
DT_SINGLELINE
Si lngLeft, lngTop ne sont pas définis en pixels, tu pourra recourir aux
méthodes ScaleX, ScaleY de ton usercontrol.
--
François Picalausa
"Flex" <flex@yahoo.co.jp> a écrit dans le message de news:
uIOpZjAAFHA.3596@TK2MSFTNGP12.phx.gbl
Bonsoir tout le monde
Comment peut on définir les points (x,y) sur un usercontrol qui
seront utilisés comme coordonnées de départ pour l'api DrawText?
Merci François Tout est tout de suite plus clair. Après quelques chagements j'ai résolu mon problème. C'etait effectivement au niveau des flags (dt_calcrect) Merci man
"François Picalausa" a écrit dans le message de news:
Hello
Il faut noter que les APIs sont indépendantes des propriétés ScaleMode, ScaleHeight, ScaleWidth, CurrentX et CurrentY, VB gérant les coordonnées de traçage de manière indépendante du GDI.
En ce qui concerne DrawText, le 4ème argument est une structure de type RECT. Cet argument est définit la position du texte (et la zone dans laquelle il doit être tracé).
Pour définir la position, tu peux donc faire comme ceci: 'En supposant que lngLeft et lngTop soient définit en pixels: rct.Left = lngLeft rct.Top = lngTop
'Calcule le rectangle de destination, les coordonnées Left,Top resteront inchangées 'Notons qu'il faut combiner les flags utilisés pour effectuer 'un calcul tout à fait correct du rectangle de destination DrawText UserControl.hDc, sCaption, Len(sCaption), rct, DT_CALCRECT or DT_SINGLELINE
'Trace le texte a la position Left,Top (inchangées par l'appel précédent DrawText(UserControl.hDc, sCaption, Len(sCaption), rct, DT_SINGLELINE
Si lngLeft, lngTop ne sont pas définis en pixels, tu pourra recourir aux méthodes ScaleX, ScaleY de ton usercontrol.
-- François Picalausa
"Flex" a écrit dans le message de news:
Bonsoir tout le monde Comment peut on définir les points (x,y) sur un usercontrol qui seront utilisés comme coordonnées de départ pour l'api DrawText?