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 :

Le dessin avec VC dans une fenetre windows


Sujet :

MFC

  1. #1
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut Le dessin avec VC dans une fenetre windows
    Salut tous les développeurs,
    Pendant notre cursus d'étude on a fait plusieurs algorithme de graphisme simple tel que BRESENHAM,...
    je veux transformer ces algoritheme en vrai utilitaire.
    l'algorithme de bresenham consiste à donnez les cordonnées sucssives des points permettant le dessin d'une droite ou un cercle. Le probléme que je ne sais pas les fonctions, les librairies et la syntaxe qui permettent le ploting des points en C/C++ avec le compilateur VCC.
    Veuillez m'aider svp.
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Est-ce que tu sais au moins progammer en mode fenêtre ou boite de dialogue? Sinon, tu ne comprendras pas ce qui suit...

    En API Win32, pour dessiner, on traite le message WM_PAINT, qui indique quand la fenêtre doit être dessinée.
    Un petit exemple, qui affiche les diagonales de la fenêtre (Les coins peuvent être un peu approximatifs) :
    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
    case WM_PAINT:
    	//Variables locales pour Dessin
    	{
    	PAINTSTRUCT ps;	//Utilisé principalement par BeginPaint() et EndPaint()
    	HDC hdc;	//Toutes les opérations de dessin utilisent le HDC
    	RECT r;	//Rectangle interne de la fenêtre: top=0 left=0
     
    	//Récupère le HDC
    	hdc=BeginPaint(hWnd,&ps);
     
    	//Récupère le rectangle interne pour avoir la taille de la fenêtre
    	GetClientRect(hWnd,&r);
     
    	//Trace les diagonales
    	//(attention, LineTo n'affiche pas le dernier point. 
    	//Ici, ce sont les points tout en bas des diagonales 
    	//qui ne seront pas tracés)
    	MoveToEx(hdc,r.right-1,r.top,NULL);
    	LineTo(hdc,r.left,r.bottom-1);
     
    	MoveToEx(hdc,r.left,r.top,NULL);
    	LineTo(hdc,r.right-1,r.bottom-1);
     
    	EndPaint(hWnd,&ps);
    	}
    	break;
    Pour MFC, on redéfinit la fonction membre OnPaint(), et au lieu du HDC, on utilise un CPaintDC (normalement, l'assistant de Visual donne le bon squelette pour la fonction)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut L'algorithme de presenham pour une ligne
    Voila le codes de l'algorithme de BRESENHAM pour une ligne :

    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
     
     
    void bresLINE(point &a,point &b)
    {
    	int deltax = b.x - a.x;
    	int deltay = b.y - a.y;
    	int p = (2*deltay) - deltax;
    	point tmp;
    	tmp.x = a.x;
    	tmp.y = a.y;
    	for (int i=0; i<=deltax ; i++)
    	{
    		cout<<"("<<tmp.x<<" , "<<tmp.y<<" )\n";
    		tmp.x +=1;
    		if (p<0)
    		{
    			p += (2*deltay);
    		}
    		else
    		{
    			p += 2*(deltay - deltax);
    			tmp.y += 1;
    		}
    	}
    }
    J'utilise une classe point.
    Ce code que j'ai crée : il affiche les cordoonnés sous forme (a,b).
    Je cherche la fonctions ou la bibliothéque C/C++ qui permet l'allumage d'un pixel sur l'écran en donnant les coordonnées de ce pixel, pas celles qui permet de dessiner des lignes, ou des cercles.

    remarque

    je cherche une fonction qui remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<"("<<tmp.x<<" , "<<tmp.y<<" )\n"
    par l'allumage du pixel de cordonnées ( tmp.x , tmp.y ).

    MERCI
    - Microsoft Dynamics AX Technical Expert
    - OpenERP Module Developper
    - Mécanicien informaticien passioné
    - CV : http://www.viadeo.com/fr/profile/mohamed-amine.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    SetPixel() et SetPixelV() qui est plus rapide.

    (s'emploient dans le même contexte que MoveToEx() et LineTo(), agissent donc sur la fenêtre. (Je ne sais pas si on peut agir sur l'écran lui-même)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. POO dessiner un objet dans une fenetre
    Par gabrielS dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2013, 23h56
  2. Réponses: 3
    Dernier message: 12/08/2011, 09h42
  3. Ouvrir un fichier dans une fenetre Windows
    Par mimish dans le forum Langage
    Réponses: 8
    Dernier message: 24/03/2010, 21h00
  4. probleme de disposition avec GridBagLayout dans une fenetre
    Par thierry_b dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 17/07/2009, 11h08
  5. [debutant]dessins dans une fenetre
    Par drosophile dans le forum 2D
    Réponses: 4
    Dernier message: 04/11/2004, 14h55

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