GDI : DrawString et AddString

TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 11 janv. 2008 à 15:53
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 14 janv. 2008 à 17:13
Bonjour,

C'est étrange, le code suivant :

Private

Sub Form1_Paint(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.PaintEventArgs)
Handles
Me.Paint
Dim
g
As Graphics = e.Graphics

Dim pth
As GraphicsPath =
New GraphicsPath()
    

dim f as font=New Font("Arial", 10)
pth.AddString("Hello the World", f.Font.FontFamily, f.Font.Style, f.Font.Size * 20 / (1440 / g.DpiX),
New Rectangle(0,0, me.Width, me.Height), StringFormat.GenericDefault)

g.FillPath(Brushes.White, pthOutline)

End
Sub

et celui-ci :
PrivateSub Form1_Paint(ByVal sender AsObject, ByVal e As System.Windows.Forms.PaintEventArgs) HandlesMe.Paint
Dim g As Graphics = e.Graphics

dim f as font=New Font("Arial", 10)
g.DrawString("Hello the Wordl", f.Font, New
SolidBrush(Color.White)
, New Rectangle(0,0,Me.Width, Me.Height))

End
Sub

Donnent 2 textes avec un léger décalage entre les caractères. DrawString donne une texte équivalent à tout composant MS (label, ..) mais pas le couple pth.AddString & pth.fillPath où le texte est sur une zone plus large

C'est ennyant car Drawstring possède un caractère super bien nette mais moins GraphicPath puis qu'il s'agit de remplissage, donc plus flou.

Comment peut-on faire en sorte que graphicpath contienne le string avec les même espacements entre les lettres que drawstring ?

TIGER

4 réponses

elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
11 janv. 2008 à 22:40
Essais en modifiant le membre de l'objet  g : "SmoothingMode"

ex : g.SmoothingMode = HighSpeed

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
12 janv. 2008 à 15:16
Merci de ta réponse elguevel, mais cette propriété ne change que la qualité du rendu, pas l'espacement entre caractère de l'instruction addstring.

Cela dit, c'est celle qui se rapproche le plus des caractères des composants standard MS au niveau de la qualité (maximum de crenélage)
TIGER
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 janv. 2008 à 17:56
Désolé j'ai lu ton message en diagonal, j'ai donc mal compris la question. Sinon je n'ai pas de réponse à ton probleme dans l'immediat.

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
14 janv. 2008 à 17:13
Voilà j'ai trouvé !
En jouant sur les propriétés de Graphics, j'ai réussi à avoir un drawstring équivalent à fillpath.

Il faut mettre : 'TextRenderingType' à la valeur 'SingleBitPerPixel'

Ouf ...

TIGER
0
Rejoignez-nous