[c++] graphique

graphique [c++] - C++ - Programmation

Marsh Posté le 16-05-2002 à 12:13:02    

Je n arrive pas a me débrouiller en graphique. Est ce que quelquel de sympa pourrais me fournir un petit programme LE PLUS SIMPLE possible pour tracer ne fut ce qu une ligne! Et que je puisse compiler directement sous visual...
 
D avance merci !!!

Reply

Marsh Posté le 16-05-2002 à 12:13:02   

Reply

Marsh Posté le 16-05-2002 à 12:16:07    

Un exemple de source qui affiche une image dans une fenêtre :
 
http://forum.hardware.fr/forum2.ph [...] ic=&trash=


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 12:23:15    

merci mais je voudrai plutot "dessiner" moi meme plutot que d'inserrer une image toute faite ...   :)

Reply

Marsh Posté le 16-05-2002 à 12:48:15    

Tu veux faire ca en quoi? Tu connais la programmation windows?


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 16-05-2002 à 12:53:02    

pas trop non ...  en c++ (visual)

Reply

Marsh Posté le 16-05-2002 à 12:57:09    

Par exemple, pour tracer un trait (en BC3 ou 5, c'est pas du C++)
 
void TraceTraitHoriz(HDC hdcD, short yPos)
{
// Trace un trait horizontal entre les axes gauche et droit de l'écran
// à la position yPos si visible à l'écran
 
     if ((yPos >= haut) && (yPos <= bas))
     {
       MoveToEx(hdcD, gauche, yPos, NULL);
       LineTo(hdcD, droite + 1, yPos); // Line ne trace pas le dernier pixel
     }
}
// fin de module TraceTraitHoriz
 
haut et bas sont les valeurs (en pixel) des bornes que je me suis fixé dans mon cadre "dessin".
 
Avant l'appel, je fais
   HDC               hdcD;
   int               rop;
   short             StylTrait;
   HPEN              hPen, hPenOld;
 
   hdcD = GetDC(hWnd);
   switch (iStyl) // trait continu, pointillé, ...
   {
     case 0:
       StylTrait = PS_DOT;   // POINTILLE
       break;
     case 1:
       StylTrait = PS_SOLID; // PLEIN
       break;
     case 2:
       StylTrait = PS_NULL;  // RIEN
   }
 
   hPen = CreatePen(StylTrait, 1, CoulTraitCurs);
   hPenOld = (HPEN)SelectObject(hdcD, hPen);
   rop = SetROP2(hdcD, R2_NOTXORPEN);  
 
et à la fin
   SetROP2(hdcD, rop);
 
   SelectObject(hdcD, hPenOld);
   DeleteObject(hPen);
   ReleaseDC(hWnd, hdcD);
}
 
Si x,y début et x,y fin sont différents, on peut tracer dans tous les sens :D.
 
Attention si on veut un trait très large : si on change l'épaisseur, les bouts "deviennent" ronds. A la place, faut dessiner un rectangle.
 
void Trait_Ou_Rect(HDC hdcT, short iEp, short iLeft, short iTop, short iRight, short iBottom, long lCouleur, BOOL Vertic)
{
// Trace un trait si épaisseur unitaire, ou rectangle sinon
 
    if (iEp > 1)
    { //  Trace Rectangle car trait d'Ep > 1 bouts arrondis
      LOGBRUSH   lb;
      HBRUSH     hbr, hbrOld;
 
      lb.lbStyle = BS_SOLID;
      lb.lbColor = lCouleur;  
      hbr = CreateBrushIndirect(&lb);
      hbrOld = (HBRUSH)SelectObject(hdcT, hbr);
      Rectangle(hdcT, iLeft, iTop, iRight, iBottom);
      SelectObject(hdcT, hbrOld);
      DeleteObject(hbr);           // détruit hBrush
    }
    else
    { // trace trait simple
      MoveToEx(hdcT, iLeft, iTop, NULL);
      if (Vertic == VERTICAL)
 LineTo(hdcT, iLeft, iBottom);
      else  // HORIZONTAL
 LineTo(hdcT, iRight, iTop);
    }
}
// fin du module Trait_Ou_Rect
 
Sais pas si ça répond à la question :).

Reply

Marsh Posté le 16-05-2002 à 12:59:09    

ouais ca c'est du win32 :)
Ben pour le reste c'est dur, il faut choisir une librairie (win32, sdl, etc.). Puis apprendre un peu les bases dessus. Là, tu peux faire une recherche sur le forum, j'ai vu pas mal de topic là dessus.
 
A+


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 16-05-2002 à 12:59:23    

je vais tester merci que faut il mettre comme #include ???

Reply

Marsh Posté le 16-05-2002 à 14:25:31    

Les includes nécessaires sont indiqués dans le MSDN, fais une recherche sur la fonction que tu souhaites puis va voir en bas de l'explication : t'as un cartouche qui récapitule tout
 
msdn.microsoft.com


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-05-2002 à 14:32:54    

C'est même du Win16 à la base :D. Quand au point, je teste ensuite sous Win32 et adapte si besoin.
 
Comme .h, j'ai windows.h et windowsx.h. J'ajoute ce qu'il faut quand besoin, mais pour le graphique, pense pas qu'il y ait de besoins.
 
Il doit y avoir des classes qui font ça bien(?). Moi je fais tout à la main.. Ca permet ensuite d'apprécier les "outils" plus généraux quand on les trouve.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed