IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

TextRenderingHint avec SingleBitPerPixelGridFit


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut TextRenderingHint avec SingleBitPerPixelGridFit
    Bonjour,

    Je développe une dll en vb.net qui doit créer un fichier binaire contenant le dessin de caractères de polices de texte.
    Le dessin des caractères sélectionnés doit être en mode pixel, (pas vectoriel) et la taille doit correspondre à la taille de la police (par exemple 12).

    J'utilise pour ce faire, les classes System.Drawing pour écrire le caractère sur un objet Graphics, associé à un objet Bitmap via la méthode DrawString.
    J'ai défini la propriété TextRenderingHint à SingleBitPerPixelGridFit pour avoir un rendu de texte en pixel lissé. (Les dpi x et y sont fixés à 96).

    Ensuite, sur l'objet Bitmap et sur toute la surface du caractère affiché j'effectue un GetPixel pour enregistrer les pixels dans le fichier binaire. (Le texte est écrit en noir, sur un fond blanc).

    Cette méthode fonctionne parfaitement pour la plupart des caractères de la plupart des polices.

    J'ai cependant un souci pour certains caractères, par exemple : " ou & de la police Arial Black 12. Les caractères sont mal définis, le caractère " n'est qu'un rectangle noir, le & a sa boucle supérieure bouchée.

    Le problème ne vient pas du GetPixel, mais bien de la propriété SingleBitPerPixelGridFit avec un dpi fixé à 96.

    Le souci, c'est que le simple fait d'augmenter le dpi, modifie naturellement la taille du caractère ce qui n'est pas souhaité. Les autres modes de TextRenderingHint ne peuvent pas convenir non plus à cause du traitement ultérieur du fichier binaire, pas de possibilité de traiter les couleurs, il faut que se soit du 1/0 par pixel...

    Voilà j'aimerai savoir s'il existe des astuces en utilisant (soit des propriétés "scales" en augmentant les dpi, soit d'autres méthodes graphiques du framework ?)

    Je vous remercie par avance de vos réponses.

    J'espère avoir été assez clair dans l'exposition de mon pb.
    Eric F

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    essaye un scaletransform sur le graphics, avant de dessiner dessus et après avoir défini les dpi
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    Merci bcp pour ton aide.

    Je n'avais, en effet, pas essayé cette méthode ScaleTransform.

    Mais celà n'a, malheureusement, aucun effet, (DPI=600 avec ScaleX=ScaleY=0.16 revient au même qu'un dpi =96 et scaleTransform=1 soient les paramètres d'origines...)

    J'ai essayé ma propre méthode de ScaleTransform, celà améliore certains caractères, mais en déteriore d'autres... car j'effecture une moyenne de pixels par pavé de "scale"...

    Ce qui est étrange, c'est que si j'effectue le GetPixel directement sur un contrôle Label, le résultat est bcp mieux, par contre la surface utile du caractère, (en pixel), est plus petite le caractère est assez bien défini mais parait "écrasé"...

    C'est vraiment difficile comme sujet !!

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo