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 6 et antérieur Discussion :

[VB6] [Graphisme] Transfert d'image pixel par pixel


Sujet :

VB 6 et antérieur

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut [VB6] [Graphisme] Transfert d'image pixel par pixel
    J'essaye un kryptage d'image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    PctCible.ScaleMode = 3
    PctSource.ScaleMode = 3
    PctCible.Height = PctSource.Height
    PctCible.Width = PctSource.Width
    LargC = PctCible.ScaleWidth
    HautC = PctCible.ScaleHeight
    For pixCx = 0 To LargC
    For pixCy = 0 To HautC Step 2
    SetPixel PctCible.hDC, pixCx + 4, pixCy + 4, GetPixel(PctSource.hDC, pixCx, pixCy)
    Next pixCy
    DoEvents
    Next pixCx
     PctCible.Refresh
    avec :

    Private Declare Function SetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
    Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

    quand je lance la procédure avec une image dans pctsource jai un voile vert qui passe sur le pctcible et puis rien de plus ???

  2. #2
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Au départ, PctSource.AutoRedraw = True et PctCible.AutoRedraw = True.
    et ça devrait être amusant comme effet de distorsion d'image.


    A+
    HCath

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas pourquoi le pctsource devrait être en autoredraw true, je n'agis pas dessus ?

    Et pas mieux le resultat !

    en fait je cherche a transférer dans la pctcible l'image de la pctsource en décalant les pixels selon un algo de kryptage ...

    je nage un peu, il n'a pas l'air de me prendr la couleur dans crcolor... de quel format est cette couleur ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    D'après ce que comprend du code le setpixel mets aux coordonnées de PixCx et PixCy la couleur du getPixel correspondant crcolor...
    J'ai essayé de mettre une valeur quelconque mais cela ne change rien ...

    il scanne bien les pixels mais il n'a pas l'air de comprendre la couleur du getpix du pixel correspondant...
    Puisqu'il me colle invariablement tout en vert ???
    Il a du reperer que les grenouilles de l'espace aiment bien le vert mais bon, c'est très gentil de sa part ...

    MAIS CE N'EST PAS CE QU JE LUI DEMANDE !

    excusez moi de cet emportement mais je perds patience ...

  5. #5
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Pas de panique !
    J'ai copié/collé ton code tel quel et obtenu le résultat attendu, c'est à dire une reproduction pâle de l'image originale. Aucun pixel vert à l'horizon.

    Donc, le problème n'est pas dans le code.

    Peut-être as-tu modifié une propriété de tes PictureBox ?
    Ou bien ton image originale exploite une palette de couleurs particulière ?
    Essaie de faire un test avec une autre image.

    A+
    HCath

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Je te remercie du temps que tu m'accordes. Je suis en week end et je verrais ça lundi...

    Quand tu dis une pale copie de l'image ??? Ce n'est pas l' effet escompté...
    En fait je cherche à créer un effet chaine kryptée mais en statique, c'est a dire prendre un paque de trois ou quatre lignes de pixel, les décaler à droite de quelques pixels, puis prendre le paque de lignes suivantes et lui attribuer un decalage dans l'autre sens...

    Le tout pour pouvoir reprendre et dechrypter l'image par l'algo inverse....

  7. #7
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 54
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Le résultat est bien une pâle copie de l'original car tu ne lis qu'une ligne de pixels sur deux de l'image originale (Step 2).

    Donc, même si ce n'était pas l'effet recherché, le résultat est intéressant !
    Tu as ouvert une voie à explorer.

    A+
    HCath

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PctCible.ScaleMode = 3
    PctSource.ScaleMode = 3
    PctCible.Height = PctSource.Height
    PctCible.Width = PctSource.Width
    LargC = PctCible.ScaleWidth
    HautC = PctCible.ScaleHeight
    For pixCx = 0 To LargC
    For pixCy = 0 To HautC
    PctCible.PSet (pixCx, pixCy), GetPixel(PctSource.hDC, pixCx + 5, pixCy)
    Next pixCy
    DoEvents
    Next pixCx
    Grace a Bidou voici quelque chose de plus efficace !
    Maintenant il faut que trouve le moyen d'agir une ligne sur deux, j'ai déja une idée ...
    il faut que je trouve un kryptage qui puisse être dekrypté pasd l'opération inverse (fonction bijective)....

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Un grand MERCI à Bidou et HCATH pour leur aide précieuse...

    Voici le résultat de mes recherches dans le domaine, un truc simple mais efficace :

    bouton krypter :
    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
    Dim LargC As Integer, HautC As Integer, pixCx As Integer, pixCy As Integer
     
    PctCible.ScaleMode = 3
    PctSource.ScaleMode = 3
    PctCible.Height = PctSource.Height
    PctCible.Width = PctSource.Width
    LargC = PctCible.ScaleWidth
    HautC = PctCible.ScaleHeight
    For pixCy = 0 To HautC Step 2
    For pixCx = 0 To LargC
    PctCible.PSet (pixCx, pixCy), GetPixel(PctSource.hDC, pixCx + 5, pixCy)
    Next pixCx
    DoEvents
    Next pixCy
     
    For pixCy = 1 To HautC Step 2
    For pixCx = 0 To LargC
    PctCible.PSet (pixCx, pixCy), GetPixel(PctSource.hDC, pixCx - 5, pixCy)
    Next pixCx
    DoEvents
    Next pixCy

    Bouton Dekrypter ...
    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
    Dim LargC As Integer, HautC As Integer, pixCx As Integer, pixCy As Integer
     
    PctEnd.ScaleMode = 3
    PctCible.ScaleMode = 3
    PctEnd.Height = PctCible.Height
    PctEnd.Width = PctCible.Width
    LargC = PctEnd.ScaleWidth
    HautC = PctEnd.ScaleHeight
    For pixCy = 0 To HautC Step 2
    For pixCx = 0 To LargC
     
    PctEnd.PSet (pixCx, pixCy), GetPixel(PctCible.hDC, pixCx - 5, pixCy)
    Next pixCx
    DoEvents
    Next pixCy
     
    For pixCy = 1 To HautC Step 2
    For pixCx = 0 To LargC
     
    PctEnd.PSet (pixCx, pixCy), GetPixel(PctCible.hDC, pixCx + 5, pixCy)
    Next pixCx
    DoEvents
    Next pixCy

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Maintenant j'ai un souci de taille ...

    En effet mon image de départ dans le Pctsource fait 1566 x 2300 pixels

    Si je dimensionne mon pctsource à ce format, j'obtiens une image blanche ????

    Je ne vois pas d'ou cela peut provenir ???

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Si je fais les opération de transferts de pixels quand le pictbox visible est false et qu'en fin de process je le passe à true, le pictbox apparait VIDE !!!

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    On ne peut pas faire d'opération sur les pixels d'un picturebox en visible =false ???

  13. #13
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    non tu ne peux pas.
    Le visible=true est l'équivalent d'un refresh, et comme la propriété picture ne contient pas une référence à un fichier, il efface tes pixels

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Bon ben il ne me reste plus qu'à jouer avec des caches parce que dès que je le bouge en zorder tout disparait aussi...

    Cela ne resoud pas le problème de la taille èvoqué ci dessus...

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Argh ! Je suis bloqué car même si le picturebox est visible = true, mais masqué par un autre objet (zorder au dessus) je n'ai pas accès aux opérations su les pixels dans la picturebox ....
    N'y aurait il pas un controle qui me permette de jouer avec les pixels qu y seraient chargés même en visible false ???

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Hum Hum ça ressemble à un monologue ... To Pix or Not To Pix that is the question ...

    Bon avec la propriété autaredraw => image en mémoire je progresse mais c'est pas gagné ....

  17. #17
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Même un monologue permet d'avancer %)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutante] Moyenner des images pixel par pixel
    Par Krokro00 dans le forum Images
    Réponses: 7
    Dernier message: 31/05/2007, 15h49
  2. Afficher un image dynamiquement pixel par pixel
    Par mchk0123 dans le forum Qt
    Réponses: 14
    Dernier message: 03/04/2007, 23h02
  3. Image a remplir Pixel par Pixel, Quel objet utiliser ?
    Par ZbergK dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 28/02/2007, 21h35
  4. Lecture de fichiers images pixels par pixels
    Par FabHacker dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2005, 16h12
  5. [ImageMagick] Parcourir une image pixel par pixel
    Par kip dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/10/2005, 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