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

Windows Discussion :

taille & résolution screenshot


Sujet :

Windows

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 49
    Points
    49
    Par défaut taille & résolution screenshot
    Bonjour à toutes et à tous

    Je souhaite faire une capture d'écran en choisissant la résolution de l'image créée

    mon ecran ayant une résolution de 1280*1024 j'ai voulu avoir une image de 380*256

    le code est le suivant

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    #include <windows.h>
    
    //-----------------------------------------------------------------------------
    // scr2jpg
    //-----------------------------------------------------------------------------
    BOOL scr2bmp(LPCTSTR pszFileName)
    {
      HDC              hdcMem;
      HDC              hdcScr;
      HBITMAP          hbmMem;
      HBITMAP          hbmOld;  
      HANDLE           hFile;
      BITMAPINFO       bmi;
      BITMAPFILEHEADER bfh;  
      BITMAPINFOHEADER bmih;
      LPBYTE           pPixels;
      DWORD            dwTmp;
      UINT             nScrX = GetSystemMetrics(SM_CXSCREEN);
      UINT             nScrY = GetSystemMetrics(SM_CYSCREEN);  
      
      hdcScr = GetDC(NULL);
      hbmMem = CreateCompatibleBitmap(hdcScr, nScrX, nScrY);
      hdcMem = CreateCompatibleDC(hdcScr);
      hbmOld = (HBITMAP) SelectObject(hdcMem, hbmMem);
      
      if(!BitBlt(hdcMem, 0, 0, nScrX, nScrY, hdcScr, 0, 0, SRCCOPY))
        goto Erreur;
    /*         
      if(!StretchBlt(hdcMem, 0, 0, 512, 384, hdcScr, 0, 0, nScrX, nScrY, SRCCOPY)) 
        goto Erreur;      
    */         
      bmih.biSize          = sizeof(BITMAPINFOHEADER);
      bmih.biWidth         = nScrX;  // 512;
      bmih.biHeight        = nScrY;  // 384;
      bmih.biBitCount      = GetDeviceCaps(hdcMem, BITSPIXEL);
      bmih.biCompression   = BI_RGB;
      bmih.biPlanes        = 1;  
      bmih.biSizeImage     = 0;
      bmih.biXPelsPerMeter = 0;
      bmih.biYPelsPerMeter = 0;
      bmih.biClrUsed       = 0;
      bmih.biClrImportant  = 0;
      
      bmi.bmiHeader        = bmih;
    
      if(!(pPixels = (LPBYTE) GlobalAlloc(GMEM_FIXED, bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8))))
        goto Erreur;                                  
                                     
      if(!GetDIBits(hdcMem, hbmMem, 0, (WORD) bmih.biHeight, pPixels, &bmi, DIB_RGB_COLORS))
        goto Erreur;                 
      
      bfh.bfType      = 0x4d42;
      bfh.bfReserved1 = 0;
      bfh.bfReserved2 = 0; 
      bfh.bfOffBits   = (DWORD) sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);   
      bfh.bfSize      = (DWORD) sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 
                                bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8);
                                
      hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
      if(hFile == INVALID_HANDLE_VALUE) 
        goto Erreur;                            
      
      if(!WriteFile(hFile, (LPVOID) &bfh, sizeof(BITMAPFILEHEADER), (LPDWORD) &dwTmp, NULL))
        goto Erreur;
        
      if(!WriteFile(hFile, (LPVOID) &bmih, sizeof(BITMAPINFOHEADER), (LPDWORD) &dwTmp, NULL))
        goto Erreur;
        
      if(!WriteFile(hFile, (LPVOID) pPixels, bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8), (LPDWORD) &dwTmp, NULL))
        goto Erreur;
    
      GlobalFree(pPixels);  
      CloseHandle(hFile);
      SelectObject(hdcMem, hbmOld);
      ReleaseDC(NULL, hdcScr);
      DeleteDC(hdcMem);
      return TRUE;
      
    Erreur:
      if(pPixels) 
        GlobalFree(pPixels);  
      if(hFile)
      { 
        CloseHandle(hFile);
        DeleteFile(pszFileName);
      }    
      SelectObject(hdcMem, hbmOld);
      ReleaseDC(NULL, hdcScr);
      DeleteDC(hdcMem); 
      return FALSE; 
    }
    
    //=============================================================================
    // winmain
    //=============================================================================
    int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, PSTR lpszArg, int iCmdShow)
    {
      return (int) scr2bmp("screen.bmp");
    }
    Merci d'avance pour votre aide et vos conseils

    ++

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Je pense qu'il y aura un StretchBlt(), mais pour l'instant ton code est trop compact.
    Tu devrais le séparer en plusieurs fonctions: Une pour capturer l'écran, une pour enregistrer, et une pour faire le traitement intermédiaire (ici, le redimensionnement)...

Discussions similaires

  1. [CSS]Résolution et taille ajustée ?
    Par elitost dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 05/05/2006, 17h02
  2. taille des frame suivant résolution de l'écran
    Par chti_juanito dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 25/04/2006, 15h17
  3. Réponses: 1
    Dernier message: 18/03/2006, 18h12
  4. [Dreamweaver MX] 2 pb : résolution et taille des pages HTML
    Par Mout85 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 20h15
  5. screenshot dans une résolution > a celle affichée
    Par cemoi dans le forum DirectX
    Réponses: 8
    Dernier message: 29/12/2003, 18h16

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