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

Access Discussion :

Classe pour image : besoin de tests,d'avis,d'idées... [En exploitation]


Sujet :

Access

  1. #41
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    merci captainamerica75...

    Citation Envoyé par marot_r
    Je suis en train de me battre avec la fonction d'écriture de texte
    Ce ne serait pas dû au fait que tu as donné la valeur 0 à TEXT_ALIGN_RIGHT? Normalement ça devrait être 2.

    Sinon j'avais voulu utiliser les Enums très pratiques pour donner une liste de valeur à des paramètres mais ça n'est pas compatible avec access 97.
    Alors des propriétés pourquoi pas...
    Je me disais que si je rajoutais trop de propriétés ça n'allait pas être beaucoup plus simple.
    Il faudrait faire la différence entre les valeurs de paramètres et les vraies propriétés.

    Je vais sûrement rajouter la possibilité de placer un texte en donnant la coordonnée d'un seul point autre que le centre (le coin en haut à gauche, en bas à droite, ...). Parce que pour l'instant si tu ne donnes qu'un point à la fonction le texte est obligatoirement centré sur ce point.
    Ce sera peut-être plus simple dans certains cas que de définir un rectangle complet, surtout si tu écrits du texte incliné...

    Bye.

  2. #42
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Non mon problème était avec les angles, j'avais mal lu la doc de l'API, et aussi avec le positionnement. Mais là j'ai trouvé une solution acceptable.

    Merci de m'avoir signaler mon bug, ce qui confirme que 0, 1 ou 2 ce n'est pas très significatif :-). J'ai trouvé les contsantes internes associées à DrawText et j'ai modifié mon code en conséquence.

    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
     
    Public Property Get TEXT_ALIGN_CENTER() As Integer
        TEXT_ALIGN_CENTER = DT_CENTER
    End Property
     
    Public Property Get TEXT_ALIGN_LEFT() As Integer
        TEXT_ALIGN_LEFT = DT_LEFT
    End Property
     
    Public Property Get TEXT_ALIGN_RIGHT() As Integer
        TEXT_ALIGN_RIGHT = DT_RIGHT
    End Property
     
    Public Property Get TEXT_ALIGN_TOP() As Integer
        TEXT_ALIGN_TOP = DT_TOP
    End Property
     
    Public Property Get TEXT_ALIGN_BOTTOM() As Integer
        TEXT_ALIGN_BOTTOM = DT_BOTTOM
    End Property
    Je ne sais pas comment MS s'y prend mais ça serait cool si on avait pour chaque paramètre l'affichage de la liste des valeurs acceptables.

  3. #43
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Avec des angles tu n'a pour l'instant que la position centrée sur les deux premières coordonnées.
    Le problème c'est que l'API dessine d'abord le texte dans un rectangle horizontal puis effectue une rotation du texte mais pas du rectangle contenant le texte.
    Donc il faut définir un rectangle plus grand qui contient à la fois le texte avant et après rotation.
    Mais pour le positionnement c'est quasi impossible dans ce cas.

    Donc les textes avec un angle ne sont facilement positionnables que sur un point (uniquement centré pour l'instant), on ne peut pas avoir un résultat correct avec un rectangle.

    ça serait cool si on avait pour chaque paramètre l'affichage de la liste des valeurs acceptables
    C'est simple en Access 2000 et +, avec Enum.
    Mais en Access 97 ça ne marche pas. :-(
    Avec les propriétés ce qui est gênant c'est qu'il y en aurait peut-être bien 15 ou 20 à créer pour les valeurs des paramètres et ça risque de faire une longue liste de propriétés/fonctions...
    Peut-être en rejetant les valeurs de paramètre en fin de liste en leur donnant un nom qui commence par z ?

  4. #44
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Pour les textes j'avais remarqué :-). N'empèche c'est déjà très bien.

    Je suis d'accord que l'ajout de constante c'est un peu lourd mais je ne vois pas d'autre solution simple pour remplacer les 'magic numbers' et rester compatible avec A97. L'idée du z, ça se tiens.

  5. #45
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    hello,

    bon alors j'ai pas le temps de faire une mise à jour des bases de tests mais ça a avancé quand même.

    y a quelques nouveautés (ben oui encore mais pas beaucoup) et toujours des bugs en moins (il n'en reste plus beaucoup je pense...)

    j'ai mis la documentation des fonctions et le premier tutoriel en relecture
    (avis aux relecteurs pour ceux qui ont accès au forum d'hébergement, merci)

    marot_r j'ai changé un peu la fonction DrawText :
    - le paramètre pType a disparu il était inutile, le type de positionnement est défini automatiquement en fonction du nombre de coordonnées passées en paramètre
    - on peut maintenant positionner les textes inclinés (et horizontaux aussi du coup) sur un point autre que le centre en jouant sur les paramètres d'alignement
    A priori ça ne devrait pas trop changer ton code j'espère, juste le paramètre à supprimer de l'appel de la fonction, la position centrée étant la position par défaut.

    Pour les valeurs des paramètres j'ai pas défini de propriétés, il y en pas mal, au moins une bonne vingtaine alors je sais pas si c'est une bonne chose? On verra il est toujours possible de les rajouter de toute façon.

    Bye.

  6. #46
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 103
    Points : 40
    Points
    40
    Par défaut
    Bonjour et bravo pour la classe, la classe!

    Un des posts précédents proposait une analyse descendante via un graphique cliquable: du général au particulier. Tous mes dessins sont prêts.

    Question toute bête: j'ai un formulaire dans lequel j'ai introduit mon formulaire cliquable "form_level1" principal en subform.

    Comment faire pour le rafraîchir, ie en cliquant sur "form_level1" le "form_level2" cliquable lui aussi s'affiche à la place?

    Merci de vos conseil!!

  7. #47
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par Arkham46
    hello,
    marot_r j'ai changé un peu la fonction DrawText :
    - le paramètre pType a disparu il était inutile, le type de positionnement est défini automatiquement en fonction du nombre de coordonnées passées en paramètre
    - on peut maintenant positionner les textes inclinés (et horizontaux aussi du coup) sur un point autre que le centre en jouant sur les paramètres d'alignement
    A priori ça ne devrait pas trop changer ton code j'espère, juste le paramètre à supprimer de l'appel de la fonction, la position centrée étant la position par défaut.
    Non, je ne pense pas et de toute façon j'ai juste un endrois à modifier dans mon appli.

    Pour les valeurs des paramètres j'ai pas défini de propriétés, il y en pas mal, au moins une bonne vingtaine alors je sais pas si c'est une bonne chose? On verra il est toujours possible de les rajouter de toute façon.
    Bye.
    Je peux m'en occuper dés que ta classe est finale :o) ... oui, oui, j'y tiens ;-) et si on peut forcer que le type soit 'propriété' on sécurise l'appli contre l'entrée de paramètres faux.

    A+

  8. #48
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Citation Envoyé par decour
    Comment faire pour le rafraîchir, ie en cliquant sur "form_level1" le "form_level2" cliquable lui aussi s'affiche à la place?
    je ne suis pas sûr d'avoir bien compris mais tu dois pouvoir transférer le contenu d'un contrôle image dans un autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image1.Picture = Image0.Picture
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image1.PictureData = Image0.PictureData
    (Je ne me rappelle plus quelle propriété c'est...)

    Ensuite avec la classe il faudrait réinitialiser le contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image1.SetImgCtrl Image1
    pour que les changements soient pris en compte si on veut dessiner sur la nouvelle image.

    J'ai pas encore testé çà mais il y a des chances que ça marche...

    Citation Envoyé par marot_r
    Je peux m'en occuper dés que ta classe est finale :o) ... oui, oui, j'y tiens ;-) et si on peut forcer que le type soit 'propriété' on sécurise l'appli contre l'entrée de paramètres faux.
    C'est une idée...
    Par contre je ne vois ce que tu entends pas "forcer que le type soit 'propriété' :
    Sinon y a un truc sympa c'est la compilation conditionnelle :
    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
     
    #If VBA6 Then
    ' Déclaration d'énumération pour Access >= 2000
    Public Enum ETextAlign 
      TEXT_ALIGN_LEFT = 1
      TEXT_ALIGN_RIGHT = 0 
    End Enum
    #Else
    ' Déclaration de propriétés pour Access 97
    Public Property Get TEXT_ALIGN_LEFT() As Integer 
        TEXT_ALIGN_LEFT = 1 
    End Property 
    Public Property Get TEXT_ALIGN_RIGHT() As Integer 
        TEXT_ALIGN_RIGHT = 0 
    End Property 
    #Endif
     
    #If VBA6 Then
    ' Paramètre avec énumération pour Access >= 2000
    Public Function DrawText(...., pAlignHoriz as ETextAlign, ...) as Boolean
    #Else
    ' Paramètre sans énumération pour Access 97
    Public Function DrawText(...., pAlignHoriz as Integer, ...) as Boolean
    #Endif
    ...
    End Function
    Comme ça ceux qui ont Access 2000 profite des énumérations et ceux qui ont Access 97 ont accès aux propriétés...
    Une piste à tester...

  9. #49
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Classe
    Je m'associe aux nbx félicitations faites sur le produit à géométrie variable ... ce qui serait intéressant c'est que la carte des département puisse se remplir en fonctions de données de tables ou requêtes .

    Encore bravo

  10. #50
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par Arkham46
    C'est une idée...
    Par contre je ne vois ce que tu entends pas "forcer que le type soit 'propriété' :?:
    Je n'ai jamais essayer de mettre comme type de variable 'property'.

    Sinon y a un truc sympa c'est la compilation conditionnelle :

    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
     
    #If VBA6 Then
    ' Déclaration d'énumération pour Access >= 2000
    Public Enum ETextAlign 
      TEXT_ALIGN_LEFT = 1
      TEXT_ALIGN_RIGHT = 0 
    End Enum
    #Else
    ' Déclaration de propriétés pour Access 97
    Public Property Get TEXT_ALIGN_LEFT() As Integer 
        TEXT_ALIGN_LEFT = 1 
    End Property 
    Public Property Get TEXT_ALIGN_RIGHT() As Integer 
        TEXT_ALIGN_RIGHT = 0 
    End Property 
    #Endif
     
    #If VBA6 Then
    ' Paramètre avec énumération pour Access >= 2000
    Public Function DrawText(...., pAlignHoriz as ETextAlign, ...) as Boolean
    #Else
    ' Paramètre sans énumération pour Access 97
    Public Function DrawText(...., pAlignHoriz as Integer, ...) as Boolean
    #Endif
    ...
    End Function
    Comme ça ceux qui ont Access 2000 profite des énumérations et ceux qui ont Access 97 ont accès aux propriétés...
    Une piste à tester...
    J'aime bien l'idée de la compilation conditionnelle même si ça fait double travail.

  11. #51
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut Effacer toutes les régions d'un coup ?
    Je trouve pas de méthode pour effacer toutes les régions d'un coup. Y'en a pas ou je ne l'ai pas vue ?

    A+

  12. #52
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    non y a rien pour supprimer toutes les régions mais ça peut être pratique :

    Rajoute celle-là dans la classe :
    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
    '---------------------------------------------------------------------------------------
    ' Supprime toutes les régions
    '---------------------------------------------------------------------------------------
    Public Function DelAllRegions() As Boolean
        Dim lCpt As Integer
        On Error Resume Next
        ' Supprimer les régions
        For lCpt = 1 To gCollRegions.Count
        ' Supprime l'objet Gdi de la mémoire
            If gCollRegions.Item(1)(0) <> 0 Then DeleteObject gCollRegions.Item(1)(0)
        ' Supprime la région de la collection
            gCollRegions.Remove 1
        Next
        If Err.Number = 0 Then DelAllRegions = True    ' renvoie Vrai si pas d'erreur
    End Function

  13. #53
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Merci

    A+

  14. #54
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Ok, j'ai fini ma base de test avec la gestion de ma carte mais tant que la classe n'est pas définitive je ne peux pas l'intégrer dans mon appli.

    Arkham46 as-tu une idée du temps qu'il va te falloir pour dire qu'elle est bonne pour le service ?

    Si cela te tente je peux te l'envoyer pour l'ajouter à tes exemples.

    A+

  15. #55
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    as-tu une idée du temps qu'il va te falloir pour dire qu'elle est bonne pour le service ?
    Ben cette semaine j'ai pas trop le temps de m'en occuper mais comme la doc et le premier tuto sont écrits je vais faire un ultime stress test ce WE avant de lâcher la permière version (j'ai pas encore fais mon giga-test avec tous les type d'images dans tous mode d'affichage et tous les positionnements possibles...).
    Sinon ça roule c'est stable, j'ai apparemment corrigé toutes les fuites en vérifiant avec la mémoire utilisée par le processus et avec un compteur d'objet Gdi pour vérifier que tout était bien libéré.


    Si cela te tente je peux te l'envoyer pour l'ajouter à tes exemples.
    ouais bien sûr je suis curieux de voir
    Je t'envoie mon mail par MP.

    Bye.

  16. #56
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Salut Arkham46, comment vas ?

    Je n'ai pas recu ton email, peux-tu m'écrire directement ?

    Ajoute seulemement yahoo.fr à mon pseudo et tu as mon email.

    A+

  17. #57
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    salut,

    J'ai mal à la tête là....

    Alors j'ai fais un test sur access 97 avec windows 98 et y a quelques limitations :
    - Le filtre d'import jpeg d'Access 97 semble limité : si j'importe une image en 2048 pixels de large il m'envoie un message d'erreur. Pour la classe ça faisait planter Windows alors je limite la taille avant d'injecter dans le contrôle; c'est moins beau mais ça plante pas...
    - Le dessin d'images translucides avec PaintImage fait planter l'application (mais c'est pas non plus la fonctionnalité la plus utile que de dessiner une image translucide...).

    Tout ça c'est pas bien grâve, j'essayerai de corriger ça mais ça me semble compliqué... En attendant ça n'empêche pas d'utiliser les 99% de fonctionnalités qui fonctionnent.

    Pour Access 2000 + Windows XP je n'ai pas rencontré de problèmes.

    Les bases de tests / d'exemples :

    Donc pour les bases de tests c'est toujours au même endroit :
    Access 2000 :ftp://ftp-developpez.com/arkham46/ClImages_2000.zip
    Access 97 :ftp://ftp-developpez.com/arkham46/ClImages_97.zip

    Je sais que certains exemples ne sont pas du tout commentés mais ça viendra avec le temps...
    La priorité était de faire des exemples pour tester les fonctions, les commentaires et explications viendront au fur et à mesure avec les tutoriaux.

    Quoi de neuf ?

    - on peut lire les composantes des couleurs des pixels de l'image et les modifier avant de les réinjecter dans l'image;
    En pratique ça donne en exemple un filtre anti-yeux rouges (filtre basique , on réduit juste la composante rouge)


    - On peut sauvegarder en Jpeg via Gdi+ (librairie microsoft)

    - On peut lire la miniature intégrée aux images Jpeg pour une prévisualisation rapide des photos (toujours via Gdi+) :
    (il faut moins de 5s à mon Athlon 800Mhz pour afficher les images de l'exemple qui suit alors que les images originales font 2048 pixels de large);

    Au passage on a dans cet exemple la lecture des données Exif à l'aide d'une classe ClExif que je suis en train de développer (j'aime bien tout ce qui à rapport à l'image...)

    La classe en v0.1 :
    Sinon la classe est en version 0.1.
    Le 0.1 ne signifie rien : c'est jusque qu'il est en temps que je la publie sinon je ne m'en sortirai jamais. Je pense avoir déboguer un maximum, il n'y pas de fuites de mémoire et il y a suffisamment d'exemples qui fonctionnent pour la juger "bonne pour le service".
    Ce n'est pas une version bêta, ce n'est pas une version finale. C'est une version c'est déjà ça...

    Les liens vers la documentation et le premier tutoriel sont ici :
    http://arkham46.developpez.com/

    Et la suite?
    Sauf problème majeure ou si je ne peux pas faire autrement, j'éviterai à l'avenir de modifier les noms et paramètres des fonctions publiques.
    En espérant assurer la compatibilité descendante (ou ascendante ? je ne sais jamais c'est dans quel sens) des nouvelles versions de la classe...

    En cas de problème n'hésitez pas à poster ici.
    J'essayerai de déboguer autant que je peux mais mes journées sont aussi courtes que les vôtres...

    Et maintenant ?
    Ben maintenant je vais faire une pause moi, c'est épuisant tout ça...

    Bye.

Discussions similaires

  1. Besoin de vous pour la compréhensions des tests. Merci.
    Par Melle Lily dans le forum Entretien
    Réponses: 3
    Dernier message: 15/05/2008, 16h41
  2. Réponses: 1
    Dernier message: 11/12/2007, 17h45
  3. [POO] Projet de class pour un formulaire => votre avis !
    Par shadeoner dans le forum Langage
    Réponses: 26
    Dernier message: 07/04/2006, 15h12
  4. [Image] Classe pour stocker une image JPEG ?
    Par elitost dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/01/2006, 13h34

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