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

SDL Discussion :

Grossir un pixel [SDL 1.2]


Sujet :

SDL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Points : 67
    Points
    67
    Par défaut Grossir un pixel
    Bonjour,

    je viens vers vous afin d'avoir quelques pistes pour grossir un pixel.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void SDL_PutPixel32(SDL_Surface *surface, int x, int y, Uint32 pixel)
    {
        Uint8 *p = (Uint8*)surface->pixels + y * surface->pitch + x *4 ;
        *(Uint32*)p = pixel;
    }
     
    Uint32 SDL_GetPixel32(SDL_Surface *surface, int x, int y)
    {
        Uint8 *p = (Uint8*)surface->pixels + y * surface->pitch + x *4;
        return *(Uint32*)p;
    }
    La fonction qui fait appelle :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    void Line(SDL_Surface* surf,int x1,int y1, int x2,int y2,Uint32 couleur)  // Bresenham
    {
      int x,y;
      int Dx,Dy;
      int xincr,yincr;
      int erreur;
      int i;
     
      Dx = abs(x2-x1);
      Dy = abs(y2-y1);
      if(x1<x2)
        xincr = 1;
      else
        xincr = -1;
      if(y1<y2)
        yincr = 1;
      else
        yincr = -1;
     
      x = x1;
      y = y1;
      if(Dx>Dy)
        {
          erreur = Dx/2;
          for(i=0;i<Dx;i++)
            {
              x += xincr;
              erreur += Dy;
              if(erreur>Dx)
                {
                  erreur -= Dx;
                  y += yincr;
                }
            SDL_PutPixel32(surf,x, y,couleur);
            }
        }
      else
        {
          erreur = Dy/2;
          for(i=0;i<Dy;i++)
            {
              y += yincr;
              erreur += Dx;
              if(erreur>Dy)
                {
                  erreur -= Dy;
                  x += xincr;
                }
            SDL_PutPixel32(surf,x, y,couleur);
            }
        }
        SDL_PutPixel32(surf,x1,y1,couleur);
        SDL_PutPixel32(surf,x2,y2,couleur);
    }
    J'aimerai grossir un peux les pixels.

    Merci de vos réponses,
    Cordialement

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    Par exemple lors du putPixel(x,y) faire aussi putPixel(x+1,y+1) , putPixel(x,y+1) et putPixel(x+1,y) : la surface du pixel sera multipliée par 4.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Bonjour,

    Par exemple lors du putPixel(x,y) faire aussi putPixel(x+1,y+1) , putPixel(x,y+1) et putPixel(x+1,y) : la surface du pixel sera multipliée par 4.
    Merci de ta réponse.

    Du coup dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Line(SDL_Surface* surf,int x1,int y1, int x2,int y2,Uint32 couleur)
    il faut que je rajoute 1 à chaque appel de la fonction comme ceci : ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_PutPixel32(surf,x+1, y+1,couleur)
    Ou alors dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SDL_PutPixel32(SDL_Surface *surface, int x, int y, Uint32 pixel)
    ?

    Parce ce que rajouter 1 ne change pas grand chose

    Merci de ta réponse,
    Cdtl,

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    Il faut placer 4 pixels au lieu d'un seul, c'est à dire ajouter 3 lignes à la première (et unique actuellement).

    Dans Line() il faut appeler 4 fois de suite la fonction ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SDL_PutPixel32(surf,x, y,couleur);
    SDL_PutPixel32(surf,x+1, y+1,couleur);
    SDL_PutPixel32(surf,x+1, y,couleur);
    SDL_PutPixel32(surf,x, y+1,couleur);

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 85
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Bonjour,

    Il faut placer 4 pixels au lieu d'un seul, c'est à dire ajouter 3 lignes à la première (et unique actuellement).

    Dans Line() il faut appeler 4 fois de suite la fonction ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SDL_PutPixel32(surf,x, y,couleur);
    SDL_PutPixel32(surf,x+1, y+1,couleur);
    SDL_PutPixel32(surf,x+1, y,couleur);
    SDL_PutPixel32(surf,x, y+1,couleur);
    Merci beaucoup !!

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

Discussions similaires

  1. [TImage] Transfert de Picture par pixels.
    Par H2D dans le forum Langage
    Réponses: 9
    Dernier message: 25/10/2003, 14h37
  2. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 22h18
  3. [Kylix] RGB d'un pixel
    Par Kusanagi dans le forum EDI
    Réponses: 1
    Dernier message: 13/11/2002, 20h33
  4. [VB6] [Graphisme] Transfert d'image pixel par pixel
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/10/2002, 09h53
  5. Réponses: 2
    Dernier message: 30/05/2002, 10h19

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