azowghi
جمعه 25 تیر 1389, 14:36 عصر
سلام
در این تاپیک کار با گرافیک winbgi رو قرار می دهم:
(http://csci.biola.edu/csci105/using_winbgi.html)
ابتدا بایست یک فایل project از نوع win32 یا در dev از نوع windows application ایجاد کنید.
سپس 3 فایل ضمیمه را دانلود کرده و به project اضافه کنید. فایل blank_graphic2.cpp را به نام project تغییر دهید. (مثلا اگر نام project شما project1 می باشد، نام فایل blank_graphic2.cpp را به project1 تغییر دهید.
حالا هر کاری که می خواهید انجام بدهید بایست در فایل فوق انجام دهید.
توضیحاتی درباره ی خطوط ابتدایی برنامه:
srand(time(NULL)); // Seed the random number generator
int GraphDriver=2,GraphMode=2;
initgraph( &GraphDriver, &GraphMode, "", 640, 480 ); // Start Window
char tempstring[80];
خطوط فوق صفحه ای در ابعاد 640 در480 ایجاد میکنند. البته دستور زیر برای تعریف یک بافر برای انجام کارهای پرینت و اسکن می باشد.
char tempstring[80];
برای پرینت کردن از دستور زیر استفاده کنید:
sprintf(tempstring,"%d",c);
outtextxy(270,315,tempstring);
دستور فوق متغیر c را در بافر tempsrting قرار می دهد و سپس با تابع outtextxy آن را چاپ می کند. (در مثال بنده c یک عدد می باشد.)
توابع زیر در دسترس شماست:
//---------setcolor( color )
// Colors:
// BLACK, BLUE, GREEN, CYAN, RED, MAGENT, BROWN, LIGHTGRAY, DARKGRAY,
// LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE
setcolor(WHITE);
//---------line( x1, y1, x2, y2);
line(20, 20, 100, 80);
setcolor(BLUE);
//---------rectangle( x1, y1, x2, y2);
rectangle(20, 100, 150, 150);
//---------setfillstyle( fill_style, color)
// Fill_styles:
// EMPTY_FILL, SOLID_FILL, LINE_FILL, LTSLASH_FILL, SLASH_FILL, BKSLASH_FILL,
// LTBKSLASH_FILL, HATCH_FILL, XHATCH_FILL, INTERLEAVE_FILL, WIDE_DOT_FILL,
// CLOSE_DOT_FILL, USER_FILL
setcolor(RED);
setfillstyle(SOLID_FILL, RED);
//---------bar( x1, y1, x2, y2);
bar(20, 200, 150, 220);
setfillstyle(SOLID_FILL, GREEN);
bar(20, 230, 150, 250);
setfillstyle(BKSLASH_FILL, LIGHTGREEN);
bar(160, 200, 190, 250);
//---------circle( X, Y, radius)
setcolor(WHITE);
circle( 50, 310, 40);
//---------putpixel (X, Y, color)
putpixel(50, 310, RED);
putpixel(60, 320, WHITE);
//---------arc( X, Y, start_angle, end_angle, radius);
// Angles in degrees 0-360.
// 0-right. Counter-clockwise (90-up, 180-left, 270-down)
arc( 140, 310, 0, 90, 40);
arc( 140, 310, 120, 160, 40);
//---------ellipse(x, y, start_angle, end_angle, x_radius, y_radius)
ellipse(60, 400, 0, 270, 50, 30);
//---------fillellipse(x, y, x_radius, y_radius);
setcolor(YELLOW);
setfillstyle(SOLID_FILL, YELLOW);
fillellipse(170, 400, 50, 30);
setcolor(WHITE);
setfillstyle(HATCH_FILL, RED);
fillellipse(250, 400, 30, 50);
//---------pieslice( x, y, start_angle, end_angle, radius)
setcolor(RED);
setfillstyle(SOLID_FILL, RED);
pieslice(350, 60, 0, 90, 40);
setcolor(WHITE);
setfillstyle(SOLID_FILL, BLUE);
pieslice(350, 60, 90,180, 40);
setcolor(GREEN);
setfillstyle(WIDE_DOT_FILL, WHITE);
pieslice(350, 65, 180, 270, 60);
setcolor(WHITE);
//---------setlinestyle(style, pattern, thickness);
// line styles:
// SOLID_LINE, DOTTED_LINE, CENTER_LINE, DASHED_LINE, USERBIT_LINE
// -- Normal: (SOLID_LINE, 0, 1);
setlinestyle(DOTTED_LINE, 0, 1);
line(300, 130, 500, 130);
setlinestyle(SOLID_LINE, 0, 3);
line(300, 150, 500, 150);
setlinestyle(DASHED_LINE, 0, 1);
rectangle(300, 170, 500, 200);
setlinestyle(SOLID_LINE, 0, 1); //Back to normal
line(300, 220, 500, 220);
//---------settextjustify( horizontal, vertical )
// horizontal = LEFT_TEXT, CENTER_TEXT, or RIGHT_TEXT
// vertical = BOTTOM_TEXT, TOP_TEXT
// -- Normal is (LEFT_TEXT, TOP_TEXT)
settextjustify(LEFT_TEXT,TOP_TEXT);
//---------settextstyle(font,direction,size)
// font = DEFAULT_FONT, TRIPLEX_FONT, SMALL_FONT, SANSSERIF_FONT, GOTHIC_FONT
// or try numbers 0 thru 15?
// direction = HORIZ_DIR, VERT_DIR
setcolor(YELLOW);
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 2);
//---------outtextxy( x, y, "text")
outtextxy(300, 260, "Triplex, size 2");
setcolor(WHITE);
settextstyle(GOTHIC_FONT, VERT_DIR, 2);
outtextxy(600, 20, "Gothic, Vertical, Size 2");
setcolor(GREEN);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
outtextxy(300, 455, "Press any key...");
//---------getch()
getch(); //Wait for a key. (When main function ends, the window will close)
} // end of main()
این هم نتایج کدهای فوق:
http://csci.biola.edu/csci105/graphics_screen_shot.gif
امیدوارم کافی بوده باشد
در این تاپیک کار با گرافیک winbgi رو قرار می دهم:
(http://csci.biola.edu/csci105/using_winbgi.html)
ابتدا بایست یک فایل project از نوع win32 یا در dev از نوع windows application ایجاد کنید.
سپس 3 فایل ضمیمه را دانلود کرده و به project اضافه کنید. فایل blank_graphic2.cpp را به نام project تغییر دهید. (مثلا اگر نام project شما project1 می باشد، نام فایل blank_graphic2.cpp را به project1 تغییر دهید.
حالا هر کاری که می خواهید انجام بدهید بایست در فایل فوق انجام دهید.
توضیحاتی درباره ی خطوط ابتدایی برنامه:
srand(time(NULL)); // Seed the random number generator
int GraphDriver=2,GraphMode=2;
initgraph( &GraphDriver, &GraphMode, "", 640, 480 ); // Start Window
char tempstring[80];
خطوط فوق صفحه ای در ابعاد 640 در480 ایجاد میکنند. البته دستور زیر برای تعریف یک بافر برای انجام کارهای پرینت و اسکن می باشد.
char tempstring[80];
برای پرینت کردن از دستور زیر استفاده کنید:
sprintf(tempstring,"%d",c);
outtextxy(270,315,tempstring);
دستور فوق متغیر c را در بافر tempsrting قرار می دهد و سپس با تابع outtextxy آن را چاپ می کند. (در مثال بنده c یک عدد می باشد.)
توابع زیر در دسترس شماست:
//---------setcolor( color )
// Colors:
// BLACK, BLUE, GREEN, CYAN, RED, MAGENT, BROWN, LIGHTGRAY, DARKGRAY,
// LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE
setcolor(WHITE);
//---------line( x1, y1, x2, y2);
line(20, 20, 100, 80);
setcolor(BLUE);
//---------rectangle( x1, y1, x2, y2);
rectangle(20, 100, 150, 150);
//---------setfillstyle( fill_style, color)
// Fill_styles:
// EMPTY_FILL, SOLID_FILL, LINE_FILL, LTSLASH_FILL, SLASH_FILL, BKSLASH_FILL,
// LTBKSLASH_FILL, HATCH_FILL, XHATCH_FILL, INTERLEAVE_FILL, WIDE_DOT_FILL,
// CLOSE_DOT_FILL, USER_FILL
setcolor(RED);
setfillstyle(SOLID_FILL, RED);
//---------bar( x1, y1, x2, y2);
bar(20, 200, 150, 220);
setfillstyle(SOLID_FILL, GREEN);
bar(20, 230, 150, 250);
setfillstyle(BKSLASH_FILL, LIGHTGREEN);
bar(160, 200, 190, 250);
//---------circle( X, Y, radius)
setcolor(WHITE);
circle( 50, 310, 40);
//---------putpixel (X, Y, color)
putpixel(50, 310, RED);
putpixel(60, 320, WHITE);
//---------arc( X, Y, start_angle, end_angle, radius);
// Angles in degrees 0-360.
// 0-right. Counter-clockwise (90-up, 180-left, 270-down)
arc( 140, 310, 0, 90, 40);
arc( 140, 310, 120, 160, 40);
//---------ellipse(x, y, start_angle, end_angle, x_radius, y_radius)
ellipse(60, 400, 0, 270, 50, 30);
//---------fillellipse(x, y, x_radius, y_radius);
setcolor(YELLOW);
setfillstyle(SOLID_FILL, YELLOW);
fillellipse(170, 400, 50, 30);
setcolor(WHITE);
setfillstyle(HATCH_FILL, RED);
fillellipse(250, 400, 30, 50);
//---------pieslice( x, y, start_angle, end_angle, radius)
setcolor(RED);
setfillstyle(SOLID_FILL, RED);
pieslice(350, 60, 0, 90, 40);
setcolor(WHITE);
setfillstyle(SOLID_FILL, BLUE);
pieslice(350, 60, 90,180, 40);
setcolor(GREEN);
setfillstyle(WIDE_DOT_FILL, WHITE);
pieslice(350, 65, 180, 270, 60);
setcolor(WHITE);
//---------setlinestyle(style, pattern, thickness);
// line styles:
// SOLID_LINE, DOTTED_LINE, CENTER_LINE, DASHED_LINE, USERBIT_LINE
// -- Normal: (SOLID_LINE, 0, 1);
setlinestyle(DOTTED_LINE, 0, 1);
line(300, 130, 500, 130);
setlinestyle(SOLID_LINE, 0, 3);
line(300, 150, 500, 150);
setlinestyle(DASHED_LINE, 0, 1);
rectangle(300, 170, 500, 200);
setlinestyle(SOLID_LINE, 0, 1); //Back to normal
line(300, 220, 500, 220);
//---------settextjustify( horizontal, vertical )
// horizontal = LEFT_TEXT, CENTER_TEXT, or RIGHT_TEXT
// vertical = BOTTOM_TEXT, TOP_TEXT
// -- Normal is (LEFT_TEXT, TOP_TEXT)
settextjustify(LEFT_TEXT,TOP_TEXT);
//---------settextstyle(font,direction,size)
// font = DEFAULT_FONT, TRIPLEX_FONT, SMALL_FONT, SANSSERIF_FONT, GOTHIC_FONT
// or try numbers 0 thru 15?
// direction = HORIZ_DIR, VERT_DIR
setcolor(YELLOW);
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 2);
//---------outtextxy( x, y, "text")
outtextxy(300, 260, "Triplex, size 2");
setcolor(WHITE);
settextstyle(GOTHIC_FONT, VERT_DIR, 2);
outtextxy(600, 20, "Gothic, Vertical, Size 2");
setcolor(GREEN);
settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
outtextxy(300, 455, "Press any key...");
//---------getch()
getch(); //Wait for a key. (When main function ends, the window will close)
} // end of main()
این هم نتایج کدهای فوق:
http://csci.biola.edu/csci105/graphics_screen_shot.gif
امیدوارم کافی بوده باشد