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

MFC Discussion :

[VC++ 2003][MFC] Problème d'affichage dans un CButton ou Picture Controle


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut [VC++ 2003][MFC] Problème d'affichage dans un CButton ou Picture Controle
    Bonjour,

    Je fais de l'acquisition d'image à l'aide d'une caméra et de fonction SDK fournis par le fabricant. J'ai une première version de mon soft qui n'a aucun soucis.

    Récement j'ai changé de caméra et donc de fonction d'acquisition vidéo, et la résolution passe de 720*578 à 1280*960 -> résultat, bizzarement le flux vidéo sors de ma fenetre de visualisation, comme s'il était décaler (identique en x et en y) au lieu d'épouser les contour de mon CButton (en owner draw) il sort même du cadre.

    Pourtant j'utilise une fonction qui doit normalement controller la taille de mon affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DisplayAreaSize(hWnd, 1280, 960);
     
    bool  CAutoVisualInspectionBenchDlg::DisplayAreaSize(HWND hWnd, int dx, int dy)
    {
    	SetWindowPos(NULL, 0, 0 , BORDER+dx +BORDER, EDIT_BORDER+BORDER+dy+BORDER, SWP_NOMOVE | SWP_NOZORDER | SWP_SHOWWINDOW | WS_THICKFRAME | WS_OVERLAPPEDWINDOW);
    	GetDlgItem(IDC_AQUI_IMAGE)->SetWindowPos(NULL, BORDER, EDIT_BORDER, dx, dy, SWP_NOMOVE | SWP_NOZORDER | SWP_SHOWWINDOW | WS_THICKFRAME | WS_OVERLAPPEDWINDOW);
     
    	return false; 
    }
    Donc voici ma question, est t'il possible de redimentionner la visualisation de mon flux vidéo pour que malgré la caméra utilisée, je puisse toujours afficher dans ma fenêtre de visualisation, quelle fonction de faudrait il utiliser? (j'utilise les MFCs)

    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut
    bon, j'ai modifié la mise en forme de mon affichage, j'ai supprimé l'ancienne fonction, et dans le thread directement je fais cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Get the device context of the window on which we want to display
    // and define a clipping region to limit the area on which the image is
    // displayed
     
    	hDc = ::GetDC(pThis->hWnd);
    	hRgn = ::CreateRectRgn(0, 0, CanvasWidth, CanvasHeight);
    	::SelectClipRgn(hDc, hRgn);
     
    // display the buffer
     
            errChk(imaq1394Plot((GUIHNDL)pThis->hWnd, (void *)ImaqBuffer, 0, 0, AcqWinWidth, AcqWinHeight, CanvasLeft, CanvasTop, plotFlag));
     
    	DeleteObject(hRgn);
    Résultat:

    toujours pareil, ma vidéo n'est pas dans mon controle, elle est toujours décaler et pas complètement dans la zone!!!!

    HELP, please...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut
    Hallo,

    personne n'a une idée sur comment faire pour redimentionner le canva à affiché dans ma fenetre de visualisation?

    Il y a beaucoup de fonctions que je n'ai jamais vue.. si quelqu'un pouvait m'expliquer comment faire.

    j'ai besoin d'enregistrer un buffer en 1280x960 et je dois visualiser dans une fenetre de 512x384.

    Quel fonction en MFC va pouvoir faire se changement?

    HELP ME..

    merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Par défaut
    Bon alors on va faire plus précis...

    Voila ce que j'ai fais, je suis dans une fonction thread:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    CmyClasse  *pThis=reinterpret_cast< CmyClasse  *>( pvParam);
     
    pThis->hDc = ::GetDC(pThis->hWnd);
    pThis->hRgn = CreateRectRgn(0, 0, 512, 384);
    ::SelectClipRgn(pThis->hDc, pThis->hRgn);
    ::SetWindowRgn(pThis->hWnd,pThis->hRgn,TRUE);
     
    // display the buffer
    errChk(imaq1394Plot((GUIHNDL)pThis->hWnd, (void *)ImaqBuffer, 0, 0, AcqWinWidth, AcqWinHeight, CanvasLeft, CanvasTop, plotFlag));
     
    ::DeleteObject(pThis->hRgn);
    ::ReleaseDC(pThis->hWnd, pThis->hDc);
    J'aimerai pouvoir afficher mon image issu d'un buffer (1280x960) dans une fenetre qui est plus petite en taille (512x384) mais ce que j'ai fais au dessus n'à rien donnée... je désespère.

    Comment doit-ton procédé?

    merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2006, 22h06
  2. Problème d'affichage dans un tableau
    Par claralavraie dans le forum ASP
    Réponses: 13
    Dernier message: 21/12/2005, 15h45
  3. [JSTL] Problème d'affichage dans un <c:forEach>
    Par zwck dans le forum Taglibs
    Réponses: 6
    Dernier message: 05/11/2005, 21h35
  4. Problème d'affichage dans un composant TScrollBox
    Par erossi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/09/2005, 11h29
  5. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00

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