1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

گرافیک در c (ايجاد منو)

شروع موضوع توسط minaaa ‏28/1/11 در انجمن C #C++

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    یک منوی ساده در عین حال زیبا ایجاد می کند.


    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <dos.h>
    #include <graphics.h>

    //Menu Global Item
    #define pixTOrc(x) (8*(x-1)) //convert pixel into row and col format
    #define INC 5 //Increment Distance Between Menu Items
    #define ROW 15 //Row Value for Menu Item
    #define COL 8 //Column Value for Menu Item
    #define MAXITEM 5 //Total menu items

    // To display the Inventory Main menu options
    typedef char option[15];
    option mainMenu[]= {
    "NEW",
    "OPEN",
    "SAVE",
    "ABOUT ME",
    "CLOSE"
    };


    // Function to displays all the menu prompt messages from the pointer array of option a[]
    void normalvideo(int x,int y,char *str)
    {
    x=pixTOrc(x);
    y=pixTOrc(y);
    outtextxy(x,y,str);
    }

    // Function to move the cursor on the menu prompt with a reverse video color
    void reversevideo(int x,int y,char *str)
    {
    x=pixTOrc(x);
    y=pixTOrc(y);
    setcolor(YELLOW); //Selected Item
    sound(400);
    delay(100);
    nosound();
    outtextxy(x,y,str);
    setcolor(WHITE); //Unselected Item
    sound(500);
    delay(100);
    nosound();
    }


    //Keep Track of which arrow key is pressed
    char menu()
    {
    int i,done;
    settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
    setcolor(WHITE); //Initial Menu Item Color

    for(i = 1; i < MAXITEM; i++)
    normalvideo(COL, (i*INC)+ROW, mainMenu);

    reversevideo(COL,ROW, mainMenu[0]);
    i = done = 0;
    do
    {
    int key;
    /**Status Bar Logic**/
    //Message will be displayed as status bar guide-line
    setfillstyle(SOLID_FILL,BLUE);
    settextstyle(SMALL_FONT,HORIZ_DIR,5);
    bar(pixTOrc(2),pixTOrc(52.5),pixTOrc(75),pixTOrc(55));
    setcolor(LIGHTCYAN);

    switch(i){
    case 0 : outtextxy(pixTOrc(5),pixTOrc(52.75),"New --> Create New file");
    break;
    case 1 : outtextxy(pixTOrc(5),pixTOrc(52.75),"Open --> Open Existing file");
    break;
    case 2 : outtextxy(pixTOrc(5),pixTOrc(52.75),"Save --> Save file");
    break;
    case 3 : outtextxy(pixTOrc(5),pixTOrc(52.75),"About Me --> Programmer : Vivek Patel");
    break;
    case 4 : outtextxy(pixTOrc(5),pixTOrc(52.75),"Close the Program --> BYE C U");
    break;
    }
    /**status Bar ends**/

    //Restore Orignal Color and Font Setting
    setcolor(WHITE);
    settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);

    key = getch();
    switch (key)
    {

    case 00:
    key = getch();
    switch (key)
    {
    case 72:
    normalvideo(COL, (i*INC)+ROW, mainMenu);
    i--;
    if (i == -1)
    i = MAXITEM-1;
    reversevideo(COL,(i*INC)+ROW,mainMenu);
    break;
    case 80:
    normalvideo(COL, (i*INC)+ROW, mainMenu);
    i++;
    if (i == MAXITEM)
    i = 0;
    reversevideo(COL, (i*INC)+ROW, mainMenu);
    break;
    }
    break;
    case 13:
    done = 1;
    }
    }
    while (!done);
    return(i+49);
    }


    //Advertise Screen will displayed to utilize empty screen area
    //It can be utilize for some effective...work
    void advertise(){
    setcolor(BLUE);
    outtextxy(pixTOrc(30),pixTOrc(20),"URL : cpp.blogfa.com");
    outtextxy(pixTOrc(30),pixTOrc(26),"Mail : cpp.myblog@gmail.com");
    setcolor(YELLOW);
    }


    /* The function is used to display the main menu*/
    //Actual code for all the menu utility resides in this
    //Function...
    void control_menu()
    {
    char choice;
    do
    {
    choice = menu();
    switch (choice)
    {
    case '1': //New
    setcolor(BLUE);
    outtextxy(pixTOrc(40),pixTOrc(15),"New");
    advertise();
    getch();
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(pixTOrc(2),pixTOrc(14),pixTOrc(75),pixTOrc(50));
    advertise();
    break;

    case '2': //Open
    setcolor(BLUE);
    outtextxy(pixTOrc(40),pixTOrc(15),"Open");
    advertise();
    getch();
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(pixTOrc(2),pixTOrc(14),pixTOrc(75),pixTOrc(50));
    advertise();
    break;

    case '3': //Save
    setcolor(BLUE);
    outtextxy(pixTOrc(40),pixTOrc(15),"Save");
    advertise();
    getch();
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(pixTOrc(2),pixTOrc(14),pixTOrc(75),pixTOrc(50));
    advertise();
    break;

    case '4': //Modify the status of item in inventory
    setcolor(BLUE);
    outtextxy(pixTOrc(40),pixTOrc(15),"About Me");
    advertise();
    getch();
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(pixTOrc(2),pixTOrc(14),pixTOrc(75),pixTOrc(50));
    advertise();
    break;

    case '5': //Close the program
    setcolor(BLUE);
    outtextxy(pixTOrc(40),pixTOrc(15),"CLOSE");
    advertise();
    delay(1000);
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(pixTOrc(2),pixTOrc(14),pixTOrc(75),pixTOrc(50));
    advertise();
    goto out;
    }
    } while (choice != MAXITEM);
    out:
    }



    void main()
    {
    int i,j;

    int gd=DETECT,gm=0;
    initgraph(&gd,&gm,"c:\\tc\\bgi\\");

    ///code as space holder\\\\\
    setfillstyle(SOLID_FILL,LIGHTGRAY);
    bar(0,0,640,480);

    setcolor(DARKGRAY);
    rectangle(0,0,639,480);
    rectangle(1,1,638,479);
    setcolor(BLACK);
    rectangle(2,1,637,478);
    rectangle(3,1,636,477);

    settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
    setcolor(BLUE);
    //outtextxy(pixTOrc(,pixTOrc(2)," MENU -->> (Simple Style) ");

    setfillstyle(HATCH_FILL,DARKGRAY);
    for(i=15,j=70;i<40||j>40;i++,j--){
    bar(pixTOrc(j),pixTOrc(7),pixTOrc(i),pixTOrc(7.5));
    delay(10);
    bar(pixTOrc(j),pixTOrc(7),pixTOrc(70),pixTOrc(7.5));
    delay(20);
    }

    bar(pixTOrc(7),pixTOrc(14),pixTOrc(25),pixTOrc(50));

    ///code as space holder\\\\\

    //Calling Menu
    control_menu();

    closegraph();
    }</pre>