C og C + + programmering Ressourcer

Share / Bookmark
Custom Search

Grafik i C Language

Sendt den 10 september, 2008

Grafik i C Language

Vi vil begrænse vores diskussion om Grafik i C Language til 16 bit C programmering og MS DOS-miljø. I et C Program først og fremmest skal du initialisere grafik drivere på computeren. Dette gøres ved hjælp af initgraph metoden i graphics.h bibliotek. I de næste par sider vil vi diskutere graphics.h bibliotek i detaljer. Vigtige funktioner i graphic.h bibliotek vil blive discuees i detaljer og prøver programmer vil blive ydet for at vise magt C programmeringssprog.

Grafiktilstand Initialisering

Først og fremmest er vi nødt til at kalde initgraph funktion, vil intialize grafikken mode på computeren. initigraph har følgende prototype.

  void initgraph (int langt * graphdriver, int langt * graphmode, char langt * pathtodriver); 

Initgraph initialiserer den grafiske system ved at indlæse en grafikdriver fra disk (eller validering af en registreret driver) derefter sætte systemet i

grafik mode.Initgraph også nulstiller alle grafik indstillinger (farve, paletten nuværende position, viewport, etc.) til deres standardindstillinger, så nulstiller graphresult til 0.

* Graphdriver

Integer, der angiver den grafikdriver der skal anvendes. Du kan give graphdriver en værdi ved hjælp af en konstant graphics_drivers tælling type.

* Graphmode

Integer, der angiver den oprindelige grafik mode (medmindre * graphdriver = Detect). Hvis * graphdriver = afsløre, initgraph sæt * graphmode til den højest mulige opløsning for de fundne driver. Du kan give * graphmode en værdi ved hjælp af en konstant graphics_modes tælling type.

* Pathtodriver

Angiver den mappe sti, hvor initgraph kigger efter grafikdrivere (*. BGI) først.

  1. Hvis de ikke er der, initgraph ser i det aktuelle bibliotek.
  2. Hvis pathtodriver er nul, skal føreren filer i det aktuelle bibliotek.

* Graphdriver og * graphmode skal være indstillet på gyldige graphics_drivers og graphics_mode værdier, eller du får uforudsigelige resultater. (Undtagelsen er graphdriver = opdage.)

Efter et opkald til initgraph, er * graphdriver sat til den nuværende grafikdriver, og * graphmode er indstillet til den aktuelle grafik mode. Du kan fortælle initgraph at anvende en bestemt grafikdriver og mode, eller at finde den vedlagte video adapter under kørslen og vælge den tilsvarende driver. Hvis du fortæller initgraph til autodetect, opfordrer detectgraph at vælge en grafikdriver og mode.

Normalt initgraph indlæser en grafikdriver ved at tildele hukommelse til føreren (gennem _graphgetmem), derefter læsses passende. BGI fil fra disk.As et alternativ til denne dynamiske belastning ordning, kan du linke en grafikdriver fil (eller flere af dem) direkte til din eksekverbare program fil.

Her er et eksempel program, initialiserer den grafiske tilstand i C Language.

 # Include <graphics.h> # include <stdlib.h> # include <stdio.h> # include <conio.h> int main (void) (/ * anmodning auto opdagelse * / int gdriver = afsløre, gmode, errorcode; / * initialisere grafik mode * / initgraph (& gdriver, & gmode, ""); / * læse resultatet af initialiseringen * / errorcode = graphresult (); if (errorcode! = grOk) / * Der opstod en fejl * / (printf ("Graphics fejl:% s \ n ", grapherrormsg (errorcode)); printf (" Tryk på en tast for at standse: "); getch (); exit (1); / * tilbage med fejlkode * /) / * trække en linje * / line (0, 0, getmaxx (), getmaxy ()); / * rydde op * / getch (); closegraph (); return 0;) 

Grafikken programmering i C-sprog diskuteres i korthed at give en over henblik på nybegynder.

  / * Sample program at tegne en cirkel * /
 # Include <graphics.h>
 # Include <conio.h>
 main ()
 (
   int gd = afsløre, gm;
   initgraph (& gd, & gm ,""); / * initialisering af grafisk mode * /
   cirkel (150.150.100);
   getch ();
   closegraph (); / * Restore originalkilden skærm * /
 )
 / * End af program * / 

Normalt skærmen som u opfattelse i DOS er i teksttilstand, som betyder, at det er beregnet til tekst. Og for grafik u nødt til at initialisere grafik mode. Og for at dette kan ske u behovet for at medtage graphics.h?.

  cirkel (x koordinere, y koordinere, radius); 

Cirklen kommandoen tager en X-koordinat, hvilket betyder, lodret akse, og Y-koordinat, hvilket betyder, Vandret akse. Og den sidste er radius af cirklen. closegraph ();

Med denne funktion skærmen mode stadig vil forblive i grafisk tilstand, og hvor u kommer ud, at DOS u vil se en anden skærm, hvilket ikke er i teksten mode.

  / * Et program til at trække et rum med stjerner * /
 # Include <graphics.h>
 main ()
 (
   int gd = afsløre, gm;
   int i, x, y;
   initgraph (& gd, & gm ,"");
   line (0,0,640,0);
   line (0,0,0,480);
   line (639,0,639,480);
   line (639,479,0,479);
   for (i = 0; i <= 1000; i + +)
   (
     x = rand ()% 639;
     y = rand ()% 480;
     putpixel (x, y, 15);
   )
   getch ();
   closegraph ();
 )
 / * End af program * / 
  / * Her en prøve program til at illustrere, hvordan man bruger BARS som anvendes til visuel statistik * /
 # Include <graphics.h>
 main () (
   int gd = afsløre, gm, maxx, maxy, x, y, knap;
   initgraph (& gd, & gm ,"");
   line (80150200150);
   line (80,150,80,50);
   settextstyle (1, HORIZ_DIR, 1);
   outtextxy (100.153, "<-X-aksen");
   settextstyle (1, VERT_DIR, 1);
   outtextxy (60,50, "<-Y-aksen");
   bar (100.100.120.150);
   bar (130.120.150.150);
   getch ();
   closegraph ();
 ) 

Sider: [Page - 1] [Side - 2] [Side - 3] [Side - 4]

Tags: , ,

Lide hvad du ser?

Bliv en af de regulars ved at abonnere! Du vil blive den første til at vide, hvornår vi tilføje flere store stillinger ligesom dette. Tilmeld dig op ved enten RSS-feeds eller e-mail opdateringer i dag!

Der er 137 kommentarer til dette indlæg. Du kan følge alle svar til denne post via RSS 2,0 feed . Du kan springe til slutningen og efterlade et svar , eller TrackBack fra dit eget site.

  • Junjun siger:

    Jeg har brug for at lave en programmering, der fungerer ligesom et afstemningssystem ... beregne stemmer ... og beregner score for finalist og vise dem i en data tekstfil ... hjælp klasser og objekt kan nogen hjælpe mig ...

  • Ankit siger:

    / / Dette er et spil kryds og intet (Zero Katta) i c + +.

    void show_game_box ();
    char m [3] [3];
    void main ()
    (
    int p, q;
    char ans;
    domstol <<"\ t \ tCROSS & NOUGHT GAME \ n";
    gøre
    (
    for (p = 1, p <= 3, p + +)
    (
    for (q = 1 q <= 3 q + +)
    (
    m [p] [q ]='';
    )
    )
    int i, j, sum = 0;
    while (sum <10)
    (
    hvis (sum == 0)
    show_game_box ();
    domstol <<"\ n \ n \ nPlayer 1 is'0 '\ n";
    domstol <<"Spiller 1's tur \ n";
    ret <> i;
    ret <> j;
    for (; (i> 3) | | (j <1 )||(' X '== m [i] [j ])||(' 0' == m [i] [j]);)
    (
    domstol <<"Desværre du har indtastet et forkert valg \ n";
    domstol <<"Indtast din valg igen \ n";
    ret <> i;
    ret <> j;
    )
    m [i] [j] = '0 ';
    sum + +;
    show_game_box ();
    if ((m [1] [1] == '0')&&( m [1] [1] == m [1] [2 ])&&( m [1] [1] == m [1] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [2] [1] == '0')&&( m [2] [1] == m [2] [2 ])&&( m [2] [1] == m [2] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [3] [1] == '0')&&( m [3] [1] == m [3] [2 ])&&( m [3] [1] == m [3] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [1] [1] == '0')&&( m [1] [1] == m [2] [2 ])&&( m [1] [1] == m [3] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [1] [3] == '0')&&( m [1] [3] == m [2] [2 ])&&( m [1] [1] == m [3] [1]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [1] [1] == '0')&&( m [1] [1] == m [2] [1 ])&&( m [1] [1] == m [3] [1]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [1] [2] == '0')&&( m [1] [2] == m [2] [2 ])&&( m [1] [2] == m [3] [2]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    if ((m [1] [3] == '0')&&( m [1] [3] == m [2] [3 ])&&( m [1] [1] == m [3] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 1 vinder spillet \ n";
    break;
    )
    hvis (sum == 9)
    (
    domstol <<"\ t \ tHURRAY !!!!! Spillet er slut \ n";
    domstol <<"\ t \ TNO ONE WINS \ n";
    domstol <<"Spillet er draw \ n";
    break;
    )
    domstol <<"\ n \ n \ nPlayer 2 is'X '\ n";
    domstol <<"Spiller 2's tur \ n";
    ret <> i;
    ret <> j;
    for (; (i> 3) | | (j <1 )||(' X '== m [i] [j ])||(' 0' == m [i] [j]);)
    (
    domstol <<"Desværre du har indtastet et forkert valg \ n";
    domstol <<"Indtast din valg igen \ n";
    ret <> i;
    ret <> j;
    )
    m [i] [j] = 'X';
    sum + +;
    show_game_box ();
    if ((m [1] [1] == 'X')&&( m [1] [1] == m [1] [2 ])&&( m [1] [1] == m [1] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [2] [1] == 'X')&&( m [2] [1] == m [2] [2 ])&&( m [2] [1] == m [2] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [3] [1] == 'X')&&( m [3] [1] == m [3] [2 ])&&( m [3] [1] == m [3] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [1] [1] == 'X')&&( m [1] [1] == m [2] [2 ])&&( m [1] [1] == m [3] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [1] [3] == 'X')&&( m [1] [3] == m [2] [2 ])&&( m [1] [1] == m [3] [1]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [1] [1] == 'X')&&( m [1] [1] == m [2] [1 ])&&( m [1] [1] == m [3] [1]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [1] [2] == 'X')&&( m [1] [2] == m [2] [2 ])&&( m [1] [2] == m [3] [2]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    if ((m [1] [3] == 'X')&&( m [1] [3] == m [2] [3 ])&&( m [1] [1] == m [3] [3]))
    (
    domstol <<"TILLYKKE !!!!!!!!!! \ n";
    domstol <<"spiller 2 vinder spillet \ n";
    break;
    )
    hvis (sum == 9)
    (
    domstol <<"\ t \ tHURRAY Spillet er slut \ n";
    domstol <<"\ t \ TNO ONE WINS \ n";
    domstol <<"\ t \ tDet Spillet er udarbejdet \ n";
    break;
    )
    )
    ret <> ans;
    ) Mens ((ans == 'y')||( ans ==' Y '));
    system ("PAUSE");
    getch ();
    )
    void show_game_box ()
    (
    domstol <<"\ n 1 2 3 \ n" <<endl;
    domstol <<"1" <<m [1] [1 ]<<"|"<< m [1] [2 ]<<"|"<< m [1] [3] <<endl;
    domstol <<"-|-|- \ n";
    domstol <<"2" <<m [2] [1 ]<<"|"<< m [2] [2 ]<<"|"<< m [2] [3] <<endl;
    domstol <<"-|-|- \ n";
    domstol <<"3" <<m [3] [1 ]<<"|"<< m [3] [2 ]<<"|"<< m [3] [3] <<"\ n \ n \ n ";
    )

  • Saqib siger:

    Amit Srivastava:
    Du kan fange mus ved hjælp af MFC i VC + + på følgende måde. Opret en standard MFC exe-filen og i DocumentView calss der vil være mus arrangementer dvs OnMouseMove (), OnLButtonDown (), kan du få position musen i en funktion. Både funktionen accepterer to parametre (uint nFlags, CPoint point). Og i Point objekt vil der være museposition (x, y), og du kan få dem let.

    @ Raj:
    Du kan få en lommeregner progam her.
    http://www.mycplus.com/free-utilities/scientific-calculator/

    @ Gcablay_18:
    Der er tutorials til rådighed her i C + + for at skabe klasser.
    http://www.mycplus.com/tutorials/cplusplus-programming-tutorials/classes-2/

    @ Vineet:
    Denne funktion lukning grafik mode og går tilbage til den holdning, det var før initgraph funktionen blev kaldt. Closegraph funktion frigiver alle de ressourcer, der benyttes af den grafiske system som memry, skrifttyper, drivere etc ...
    Du kan lære mere om grafik-funktioner her
    http://www.mycplus.com/featured-articles/c-language-graphics-library-reference-part-1/


Efterlad et svar

Du skal være logget ind for at skrive en kommentar.