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 :

[MFC] affichage image caméra dans un projet dialog


Sujet :

MFC

  1. #1
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut [MFC] affichage image caméra dans un projet dialog
    Bonjour,

    Je voudrais afficher les images reçu d'une caméra dans un projet basé dialog, ceci afin de simplifier au plus l'IHM.
    Mon programme marche très bien avec une SDI, mais j'essaie de la passé que dans un dialogue et je n'arrive à rien.

    Auriez vous une idée de comment faire.
    J'ai essayé de passer ma fonction OnDraw en OnPaint, mais cela ne semble pas fonction

    Merci beaucoup

    ^VPM

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    Tu utilises quoi pour recup l'image de la camera ?
    DirectShow ou VFW ?

    Post le code de ta dialog, simplifiée au max.

  3. #3
    Membre régulier Avatar de Vestaproman
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Décembre 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2003
    Messages : 95
    Points : 84
    Points
    84
    Par défaut
    voila le code
    J'ai une fonction draw qui est ensuite appeler dans le paint
    Ce qui se passe lorsque je lance l'acqui et qu'il faut que je déplace la boite de dial pour que quelque chose se passe, iquelque chose se redessine mais ce n'est pas mon image
    Pour récupérer l'image j'utilise une dll livré avec la cam
    Merci

    VPM


    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
     
     
    void CDrawing2BitmapDlg::Draw()
    {
    	CDC* pDC = GetDC();
    	if(initialisation)
    	{
    		CBitmap *OldBitmap;
    		CBitmap *Bitmap;
    		if(pDC != NULL)
    		{
     
     
    			if(bViewCol)
    				Bild = Cam->GetBmpHandle(1);       // get HBITMAP from csensi-object
    			else
    				Bild = Cam->GetBmpHandle(0);
     
    			bShow = TRUE;
     
    			if(Bild)
    			{
     
    				CDC *dcmem;                        // create memory DC
    				dcmem = new CDC();
    				dcmem->CreateCompatibleDC(pDC);
    				if(!bViewCol)                      // if b/w: set palette to dc (image problems
    				{                                 // in color modes other than true color)
    					Cam->SetBWPalette(pDC);
    					Cam->SetBWPalette(dcmem);
    				}
     
     
    				// select Image
    				Bitmap = OldBitmap->FromHandle(Bild);// misuse OldBitmap to create
    				OldBitmap = (CBitmap*)dcmem->SelectObject(Bitmap);
    				pDC->SetStretchBltMode(HALFTONE);  // ou COLORONCOLOR
    				pDC->StretchBlt(m_rDrawingSurface.left,m_rDrawingSurface.top,m_rDrawingSurface.Width(),m_rDrawingSurface.Height(),dcmem,0,0,Cam->iXRes,Cam->iYRes,SRCCOPY);
     
    				dcmem->DeleteDC();                 // delete memory DC to avoid leaks
    				delete(dcmem);
    			}
     
    		InvalidateRect(NULL);
     
    		}
    		ReleaseDC(pDC);
    	}
    }
     
    void CDrawing2BitmapDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    	{
    		CAboutDlg dlgAbout;
    		dlgAbout.DoModal();
    	}
    	else
    	{
    		CDialog::OnSysCommand(nID, lParam);
    	}
    }
     
    // If you add a minimize button to your dialog, you will need the code below
    //  to draw the icon.  For MFC applications using the document/view model,
    //  this is automatically done for you by the framework.
     
    void CDrawing2BitmapDlg::OnPaint() 
    {
     
    		CDialog::OnPaint();
    		Draw();
     
    }
     
     
     
    void CDrawing2BitmapDlg::OnInitialisation() 
    {
    	// TODO: Add your control notification handler code here
    mydc = new CPaintDC(this);
      mymemdc = new CDC();
      mymemdc->CreateCompatibleDC(mydc);
      Cam = new CSensiEFS(mydc,mymemdc);      // create camera object
     
     
     int err=Cam->InitEFS(); 
    	initialisation=TRUE;	
    }
     
    void CDrawing2BitmapDlg::OnAcquisition() 
    {
    	// TODO: Add your control notification handler code here
    if(!bSerie)
      {
    	hTimer = timeSetEvent(10,10,Timer,(unsigned long) this,TIME_PERIODIC|TIME_CALLBACK_FUNCTION);
     
        Cam->StartSeqEFS();                   // prepare for sequenz
        bSerie = TRUE;
      }
      else
      {
        Cam->StopSeq();                    // stop sequenz
        bSerie = FALSE;
     
        bNewPic = FALSE;
    	bSerie = FALSE;
     
    	timeKillEvent(hTimer);
      }	
    }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut Un projet de DESS
    Salut, pour mon projet de DESS j'ai réalise exactement ce que tu veux faire alors avce VFW c'est quand même très simple (par contre la cam doit etre sur USB) au cas ou je te donne le code d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    hWndC=capCreateCaptureWindow("Fenetre de capture",WS_CHILD|WS_VISIBLE,x,y,320,240,m_hWnd,0); 
     
    	if (hWndC != 0)
    	{
    		capDriverConnect(hWndC,0); 
    		capPreviewRate(hWndC,10); 
    		capPreview(hWndC,TRUE); 
    	}
    	else
    MessageBox("Impossible de démarrer le driver de la caméra.","Erreur",MB_OK+MB_ICONERROR);
    Très simple et ça fonctionne, attention il faut inclure le lib de VFW dans les options de ton compilo

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2010, 13h06
  2. Affichage image .GIF dans fenêtre
    Par ProofOfConcept dans le forum Tkinter
    Réponses: 3
    Dernier message: 28/06/2009, 22h00
  3. probleme affichage image + texte dans table dynamique
    Par battit64 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/04/2008, 10h09
  4. Affichage image medical dans Windows Explorer
    Par cheho dans le forum Windows XP
    Réponses: 4
    Dernier message: 21/08/2006, 09h47
  5. [MFC] Perte du clw dans un projet ATL
    Par Yapadavaro dans le forum MFC
    Réponses: 2
    Dernier message: 29/04/2005, 14h01

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