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 :

Problème d'image tronquée sur win8


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Problème d'image tronquée sur win8
    Hello,

    Pour générer des barcodes au format EAN13 en .NET, j'utilise la librairie qui se trouve ici. (c'est du c# que j'ai converti en vb).

    Sur win7, pas de souci, c'est nickel.

    Là je teste mon projet sur une surface pro 3 avec win8.1 pro et le bas de l'image fournie par la fonction Paint de la librairie est tronqué.

    Y a un paramètre spécial à régler ?

    Sur ce, en attendant une réponse, je m'en vais fouiller le code source après quelque chose susceptible de produire ce genre de comportement.
    Kropernic

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca doit du au facteur de grossissement, qu'on trouve sur certaines tablettes, et avec certains écran haute résolution
    pour vérifier si ca vient de là tu peux chercher ce paramètre dans windows (dans les paramètres d'affichage)
    si en remettant à 100% c'est bon c'est que ca vient bien de là
    en windows forms ca agrandit certains controles avec un des effets parfois dérangeant, alors que wpf doit gérer ça comme il faut
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bin justement, la couche graphique est un projet en wpf pour le coup.

    Par contre, la classe chargée de créer l'image du barcode est dans un projet de type class library. Ca peut jouer ?

    (je suis toujours en n-tiers, pas encore passer le cap du mvvm. une chose à la fois)
    Kropernic

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    dll pas de soucis

    as tu essayé à 100% dans windows ?
    le code que tu as trouvé semble être du windows forms
    l'image est sauvegardé puis affichée ? si oui fait elle la taille du controle ? le controle a une taille fixe ? l'image aussi ?

    sinon pourquoi ne pas réécrire la conversion code39 en wpf ? (sur wikipedia il y a l'explication du code39, ca se code rapidement, enfin si on sait draw en wpf ^^)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    dll pas de soucis
    C'est déjà ça ^^

    Citation Envoyé par Pol63 Voir le message
    as tu essayé à 100% dans windows ?
    Je n'ai pas trouvé d'endroit où on peut choisir un pourcentage de grossissement comme dans win7 mais j'ai trouvé, je pense, un équivalent où on peut juste faire coulisser une règle entre smaller et larger. Même en mettant au plus petit, ça ne résoud pas le problème.

    Citation Envoyé par Pol63 Voir le message
    le code que tu as trouvé semble être du windows forms
    Ah ? Je pensais que les trucs spécific winform/wpf ne concernait que les parties qui interagisse avec les composants visuels. Ici, ça crée effectivement une image mais une image, c'est pareil des deux côtés non ? (et en écrivant, je me rends compte que probablement que non vu que sous winform, c'est ok d'afficher des bitmaps alors qu'en wpf, il a fallu que que je convertisse en bitmapsource)

    Citation Envoyé par Pol63 Voir le message
    l'image est sauvegardé puis affichée ? si oui fait elle la taille du controle ? le controle a une taille fixe ? l'image aussi ?
    L'image n'est pas sauvegardée. Elle est créée en mémoire et affichée. Je ne fixe qu'une seule des deux dimensions. L'autre est déterminée pour maintenir la proportion. Je fixe à la hauteur justement pour le moment.

    Citation Envoyé par Pol63 Voir le message
    sinon pourquoi ne pas réécrire la conversion code39 en wpf ? (sur wikipedia il y a l'explication du code39, ca se code rapidement, enfin si on sait draw en wpf ^^)
    La page que j'ai lié parle du code39 au début mais c'est juste pour signaler qu'il avait écrit un autre article sur ce sujet. Ici, c'est de l'EAN13 ^^.
    J'ai vaguement essayé de comprendre comment il déterminait la taille des barres à dessiner mais j'ai laissé après 10 minutes. D'autres choses à faire.

    Mais je vais regarder du coup ce qu'il faudrait faire pour réécrire ça en wpf. Si t'as des pistes sous la main, je suis preneur
    Kropernic

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Ah ? Je pensais que les trucs spécific winform/wpf ne concernait que les parties qui interagisse avec les composants visuels. Ici, ça crée effectivement une image mais une image, c'est pareil des deux côtés non ? (et en écrivant, je me rends compte que probablement que non vu que sous winform, c'est ok d'afficher des bitmaps alors qu'en wpf, il a fallu que que je convertisse en bitmapsource)
    windows forms pour les controles se base sur gdi+ (dll qui date de windows 95 ou 98)
    pour l'impression aussi, et pour les images aussi
    en windows forms quand on manipule un system.Drawing.image (ou .bitmap) c'est gdi+ qui est derrière, le framework .net n'est qu'un wrapper à ce niveau (c'est d'ailleurs un objet non managé = externe = disposable)

    en wpf tu peux essayer de taper system.drawing ca n'existe pas
    gdi+ a été abandonné au profit de directX, la partie imagerie a été recodée (vers system.windows.imaging ou un truc dans le genre)
    ca doit être au passage du managé ... à vérifier
    si c'est une image en mémoire, c'est que le l'image doit etre sauvegardée en octets, et à partir de là on peut en effet repartir sur une classe de wpf pour charger l'image à partir des octets

    Citation Envoyé par Kropernic Voir le message
    La page que j'ai lié parle du code39 au début mais c'est juste pour signaler qu'il avait écrit un autre article sur ce sujet. Ici, c'est de l'EAN13 ^^.
    J'ai vaguement essayé de comprendre comment il déterminait la taille des barres à dessiner mais j'ai laissé après 10 minutes. D'autres choses à faire.

    Mais je vais regarder du coup ce qu'il faudrait faire pour réécrire ça en wpf. Si t'as des pistes sous la main, je suis preneur
    de mémoire les ean13 sont "écrits" en code 39
    il y a plusieurs méthodes de gestion de code barre (code39, code128...) avec des utilisations derrière (isbn, ean13, ean128)
    dans tous les cas le but est de transformer un string en barres
    les barres sont soit noires soit blanches, elles font toutes une unité de largeur, quand 2 barres de même couleur sont collées ca donne une impression de grosse barre, et l'unité de largeur est au choix, le lecteur se débrouille pour trouver la largeur d'une barre
    de mémoire code39 il doit y avoir une entete et une fin, et chaque caractère (parmis ceux utilisables, pas tous) est représenté par une série de barres (0=blanc, 1=noir)
    et sur wikipedia (fr ou en) il doit y avoir le détail
    l'entete et la fin sont une série fixe, qui doit permettre au lecteur de reconnaitre que c'est du code39 et de connaitre la taille d'une barre
    code128 par contre est plus compliqué à mettre en oeuvre
    bref la taille des barres et la hauteur c'est toi qui choisit en fonction de la place que tu as de dispo, mais quand c'est trop petit c'est pas lisible ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    windows forms pour les controles se base sur gdi+ (dll qui date de windows 95 ou 98)
    pour l'impression aussi, et pour les images aussi
    en windows forms quand on manipule un system.Drawing.image (ou .bitmap) c'est gdi+ qui est derrière, le framework .net n'est qu'un wrapper à ce niveau (c'est d'ailleurs un objet non managé = externe = disposable)

    en wpf tu peux essayer de taper system.drawing ca n'existe pas
    gdi+ a été abandonné au profit de directX, la partie imagerie a été recodée (vers system.windows.imaging ou un truc dans le genre)
    ca doit être au passage du managé ... à vérifier
    si c'est une image en mémoire, c'est que le l'image doit etre sauvegardée en octets, et à partir de là on peut en effet repartir sur une classe de wpf pour charger l'image à partir des octets
    Effectivement. Maintenant que tu le dis, je me rappelle avoir du ajouter une référence vers System.Drawing.
    Et effectivement, la classe BitmapSource de WPF se trouve dans System.Windows.Media.Imaging.

    Citation Envoyé par Pol63 Voir le message
    de mémoire les ean13 sont "écrits" en code 39
    il y a plusieurs méthodes de gestion de code barre (code39, code128...) avec des utilisations derrière (isbn, ean13, ean128)
    dans tous les cas le but est de transformer un string en barres
    les barres sont soit noires soit blanches, elles font toutes une unité de largeur, quand 2 barres de même couleur sont collées ca donne une impression de grosse barre, et l'unité de largeur est au choix, le lecteur se débrouille pour trouver la largeur d'une barre
    de mémoire code39 il doit y avoir une entete et une fin, et chaque caractère (parmis ceux utilisables, pas tous) est représenté par une série de barres (0=blanc, 1=noir)
    et sur wikipedia (fr ou en) il doit y avoir le détail
    l'entete et la fin sont une série fixe, qui doit permettre au lecteur de reconnaitre que c'est du code39 et de connaitre la taille d'une barre
    code128 par contre est plus compliqué à mettre en oeuvre
    bref la taille des barres et la hauteur c'est toi qui choisit en fonction de la place que tu as de dispo, mais quand c'est trop petit c'est pas lisible ^^
    Ah bin ça, je l'ignorais totalement.
    Ce qui donne un début d'explication à ce passage du code auquel je ne pigeais rien du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                '      #  LEFT ODD   LEFT EVEN  RIGHT
                AddCode(0, "0001101", "0100111", "1110010")
                AddCode(1, "0011001", "0110011", "1100110")
                AddCode(2, "0010011", "0011011", "1101100")
                AddCode(3, "0111101", "0100001", "1000010")
                AddCode(4, "0100011", "0011101", "1011100")
                AddCode(5, "0110001", "0111001", "1001110")
                AddCode(6, "0101111", "0000101", "1010000")
                AddCode(7, "0111011", "0010001", "1000100")
                AddCode(8, "0110111", "0001001", "1001000")
                AddCode(9, "0001011", "0010111", "1110100")
    [EDIT]
    Sinon pour info, pour convertir mon bitmap en bitmapsource, je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Public Function ConvertBitmapToBitmapSource(bmp As Bitmap) As BitmapSource
            Return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(Color.Transparent),
                                                                                IntPtr.Zero,
                                                                                New System.Windows.Int32Rect(0, 0, bmp.Width, bmp.Height),
                                                                                Nothing)
        End Function
    Ce qui, sous win7 me donne tout bien comme il faut et sous win8, il me manque quelques pixels (max 10 je pense) dans le bas.
    Kropernic

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je t'ai dis une connerie, ean13 n'utilise pas code39, mais bien ean13, un autre type de codage (les 3 valeurs de 0 et 1 ca me paraissait bizarre mais c'est bien ca qui est utilisé par ean13)
    et ean13 ne peut coder que des chiffres (12 en entrée + 1 calculé en checksum) alors que code39 permet de coder une quarantaine de caractères

    https://fr.wikipedia.org/wiki/Code-barres_EAN (et surtout cette partie qui explique les 3 types de barres possible pour chaque chiffre https://fr.wikipedia.org/wiki/Code-b...C3.A9ments_EAN)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Je regarderai à la définition de l'ean13 plus tard.

    Je viens de tester sur un pc avec win8 (pas une tablette) et là, j'ai bien le bas de l'image.

    J'en conclus que cela doit venir d'un point de configuration de la surface pro 3. Reste plus qu'à trouver quoi.

    Mais je chercherai plus tard. Y a encore une tablette HP en cours de config par l'équipe système. Si c'est ok sur celle-là, j'arrête les recherches pour le moment vu que ce sera ce modèle-là qui sera utilisé en magasin par les utilisateurs.

    [EDIT 1]
    Je remarque à l'instant un nouveau truc étrange.

    Sur mon laptop de dev avec win7, un MenuItem dont IsEnabled est à False est bien grisé.

    Sur la tablette avec win8, on ne peut pas cliquer dessus mais il n'est pas grisé.

    Qu'est-ce que toutes ces différences... Je pensais que la surface pro était vendu comme étant un pc à part entière. Me serais-je fourvoyé ?

    [EDIT 2]
    Citation Envoyé par Kropernic Voir le message
    Je viens de tester sur un pc avec win8 (pas une tablette) et là, j'ai bien le bas de l'image.

    J'en conclus que cela doit venir d'un point de configuration de la surface pro 3. Reste plus qu'à trouver quoi.

    Mais je chercherai plus tard. Y a encore une tablette HP en cours de config par l'équipe système. Si c'est ok sur celle-là, j'arrête les recherches pour le moment vu que ce sera ce modèle-là qui sera utilisé en magasin par les utilisateurs.
    Bon bin c'est tronqué aussi sur la tablette HP.

    C'est donc un problème inhérent aux tablettes vu que sur les desktops, le problème n'est pas.
    Reste plus qu'à trouver quoi...
    Kropernic

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ca doit du au facteur de grossissement, qu'on trouve sur certaines tablettes, et avec certains écran haute résolution
    pour vérifier si ca vient de là tu peux chercher ce paramètre dans windows (dans les paramètres d'affichage)
    si en remettant à 100% c'est bon c'est que ca vient bien de là
    en windows forms ca agrandit certains controles avec un des effets parfois dérangeant, alors que wpf doit gérer ça comme il faut
    As tu essayé ça ? Je sais que sur ma tablette Windows 8.1 j'avais même des merdes sur des jeux où le texte était grossi.

  11. #11
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    As tu essayé ça ? Je sais que sur ma tablette Windows 8.1 j'avais même des merdes sur des jeux où le texte était grossi.
    Hello,

    Citation Envoyé par kropernic dans le message #5
    Citation Envoyé par Pol63
    as tu essayé à 100% dans windows ?
    Je n'ai pas trouvé d'endroit où on peut choisir un pourcentage de grossissement comme dans win7 mais j'ai trouvé, je pense, un équivalent où on peut juste faire coulisser une règle entre smaller et larger. Même en mettant au plus petit, ça ne résoud pas le problème.




    J'ai à la question "As tu essayé ça ?", j'ai envie de répondre oui et non .
    Kropernic

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Je crois que c'est le même menu su Windows 8.1 :
    http://www.windows8facile.fr/windows...fenetre-texte/

  13. #13
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Oui bin je n'ai jamais trouvé cet écran avec les 3 boutons radio.

    A la place, j'ai trouvé un écran avec une glissière qui va de plus petit à plus grand. Mais même en mettant sur la plus petite valeur possible, le problème persiste.
    Kropernic

  14. #14
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Oui bin je n'ai jamais trouvé cet écran avec les 3 boutons radio.

    A la place, j'ai trouvé un écran avec une glissière qui va de plus petit à plus grand. Mais même en mettant sur la plus petite valeur possible, le problème persiste.
    Sur l'écran faut cohcer une case pour te laisser choisir cette option:

    http://www.microsoft-desktop.com/201...ines-fenetres/

  15. #15
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Sur l'écran faut cohcer une case pour te laisser choisir cette option:

    http://www.microsoft-desktop.com/201...ines-fenetres/
    Ah bin fallait le savoir !

    Du coup j'ai fait le test et effectivement, si je choisis "smaller - 100%", j'ai bien mon image en entier. Par contre, la tablette est presque inutilisable tellement tout est petit...

    Est-il possible d'adapter la taille d'un truc sans impacter le reste ?

    N.B. : Je me rends compte que ce n'est plus un problème de .NET du coup :-/
    Kropernic

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je pense plutot que le problème c'est tu ne maitrise pas ce que tu utilises

    par exemple si ca génère une image, c'est que tu affiches cette image, donc tu dois savoir la taille nécessaire, voire la choisir ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #17
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    je pense plutot que le problème c'est tu ne maitrise pas ce que tu utilises

    par exemple si ca génère une image, c'est que tu affiches cette image, donc tu dois savoir la taille nécessaire, voire la choisir ...
    Ah ça c'est fort possible aussi .

    Mais, si je définis la hauteur sans définir la largeur, ça s'adapte automatiquement non ? D'ailleurs, si je réduis la taille de l'écran, la taille de l'image suit et les proportions restent respectées.

    Bref, j'suis à la maison là, je testerai cela en long et en large demain au bureau et je mettrai du code en prime.
    Kropernic

  18. #18
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Creusons donc davantage
    Comme suggéré par Pol63 hier soir, il est possible que je ne maîtrise pas ce que j'utilise. Ce qui est probable vu que je débute en WPF.

    Voici donc l'objet du délit (il s'agit des deux images dans les 2 labels du milieu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
                            <WrapPanel x:Name="wpDetails" MaxWidth="{Binding ElementName=spDetails, Path=ActualWidth}">
                                <Label x:Name="lblMatricule" >
                                    <WrapPanel>
                                        <TextBlock Text="Matricule : "/>
                                        <TextBlock Text="{Binding Matricule}"/>
                                    </WrapPanel>
                                </Label>
                                <Label x:Name="lbl881" >
                                    <WrapPanel>
                                        <TextBlock Text="Carte GM"/>
                                        <Image Source="{Binding Barcode881, Mode=TwoWay}" Height="200"  />
                                    </WrapPanel>
                                </Label>
                                <Label x:Name="lbl882" >
                                    <WrapPanel>
                                        <TextBlock Text="Carte caisse"/>
                                        <Image Source="{Binding Barcode882, Mode=TwoWay}" Width="200"  />
                                    </WrapPanel>
                                </Label>
                                <Label x:Name="lblLocked">
                                    <WrapPanel>
                                        <TextBlock Text="Carte bloquée :"/>
                                        <TextBlock Text="{Binding Card.Locked, Converter={StaticResource BoolToStringConverter}}"/>
                                    </WrapPanel>
                                </Label>
                            </WrapPanel>
    J'ai fait exprès de fixer la hauteur sur l'une et la largeur sur l'autre. Et voici ce que cela donne en image, d'abord sur un desktop avec Win7 (j'ai fait le test sur un desktop avec Win8.1 Pro, même résultat) et ensuite sur une Surface Pro 3 avec Win8.1 Pro.

    Win7 :
    Nom : prob_imgWin7.png
Affichages : 144
Taille : 19,2 Ko

    Win8.1 Pro:
    Nom : prob_imgWin8SP3.png
Affichages : 137
Taille : 31,0 Ko

    On voit bien que suivant que je fixe la hauteur ou la largeur, l'image s'adapte toute seule (comme une grande) pour conserver ses proportions (heureusement sinon le barcode serait illisible pour le scanner).
    On voit aussi que sur la tablette, il manque quelques pixels du bas de l'image.

    Je viens encore de faire le test pour montrer à mon chef qui passait dans le coin. Si, dans la config de la tablette, je choisis l'option de grossissement 100%, alors l'image est bien entière mais tout est affiché tellement petit qu'il faut presque une loupe pour pouvoir utiliser la tablette. Cette configuration n'est donc pas une option.

    Je continue à creuser ce problème car j'aimerais connaître le fin mot de l'histoire. Est-ce un problème inhérent aux tablettes (donc plus ou moins insoluble) ou est-ce un problème lié à mon code ?
    Sinon, j'ai trouvé une solution de contournement assez simple qui consiste à générer l'image sans les chiffres intégrés dans le barcode et à les afficher simplement comme un texte au dessus ou au dessous (ps encore décidé).

    EDIT : Je viens de réaliser qu'il suffisait de diminuer la résolution pour récupérer un affichage aillant une taille ne nécessitant pas l'utilisation d'une loupe pour lire l'écran. Par contre, pas moyen d'en trouver une autre que celle recommandée (ie la maximale et donc trop grande) qui corresponde aux proportions de l'écran. Du coup, il y a toujours un bord noir. Soit on se croit au cinéma, soit on regarde une vieille série en 4:3 sur un écran 16:9 . Pas top non plus donc.
    Kropernic

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    mets ton image en stretch

    comme je l'ai dis la taille du code barre ne change rien sur sa lisibilité, c'est une question d'échelle
    en hauteur avec la plupart des lecteurs 1cm de haut devrait suffire, donc plus c'est bon
    et en largeur tant que c'est pas trop petit ca suffit, après certains lecteurs ont une visée étroite donc très large ca obligerait à se reculer un peu trop
    qu'une barre fasse 1 pixel ou 10 pixel tant que tu gardes cette échelle sur toute la largeur le code barre reste bien le même
    donc avec le controle image en stretch ca devrait résoudre ton problème
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  20. #20
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bin, c'est déjà en stretch non ?
    Nom : stretch.png
Affichages : 142
Taille : 5,2 Ko

    Tu mettrais autre chose toi ?
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Image tronquée sur un <a href>
    Par titan_33 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/07/2008, 14h48
  2. Problème affichage image stockée sur disque avec oracle XE
    Par thriller86 dans le forum Débuter
    Réponses: 6
    Dernier message: 13/06/2008, 13h29
  3. Réponses: 2
    Dernier message: 11/09/2007, 11h22
  4. [débutant] problème d'image sur une form
    Par Anthony17 dans le forum Delphi
    Réponses: 3
    Dernier message: 21/11/2006, 14h49
  5. [Avertis]Problème Infobulle/Popup Onmouseover sur une image
    Par Yanos dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/05/2006, 14h10

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