Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3131 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++] graphique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] graphique

n°139766
the big be​n
Posté le 16-05-2002 à 12:13:02  profilanswer
 

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 !!!

mood
Publicité
Posté le 16-05-2002 à 12:13:02  profilanswer
 

n°139770
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 12:16:07  profilanswer
 

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)
n°139774
the big be​n
Posté le 16-05-2002 à 12:23:15  profilanswer
 

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

n°139782
Willyzekid
Posté le 16-05-2002 à 12:48:15  profilanswer
 

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


---------------
Horizon pas Net, reste à la buvette!!
n°139785
the big be​n
Posté le 16-05-2002 à 12:53:02  profilanswer
 

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

n°139786
Carbon_14
Posté le 16-05-2002 à 12:57:09  profilanswer
 

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 :).

n°139788
Willyzekid
Posté le 16-05-2002 à 12:59:09  profilanswer
 

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!!
n°139789
the big be​n
Posté le 16-05-2002 à 12:59:23  profilanswer
 

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

n°139834
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 14:25:31  profilanswer
 

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)
n°139846
Carbon_14
Posté le 16-05-2002 à 14:32:54  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] graphique

 

Sujets relatifs
[JAVA] Interface Graphique et fichier HTML local[JAVA] Récuperation d'un entier avec interface graphique
[C++ / QT] lib graphique[Turbo Pascal] Capture d'ecran en mode graphique
[OPENGL] carte graphique non reconnue...**** VBA Excel: Comment selectionner un graphique existant ??? *******
[VB] afficher graphiqueMettre une carte graphique sur un image en fond de tableau dans dream?
Java et interface graphique[Langage C] Interface graphique : style DOS?
Plus de sujets relatifs à : [c++] graphique


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)