This shows you the differences between two versions of the page.
— |
c:graphics.h:setaspectratio [2024/02/16 01:05] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== setaspectratio ===== | ||
+ | |||
+ | |||
+ | ====Syntax of setaspectratio ==== | ||
+ | <code c> | ||
+ | #include <graphics.h> | ||
+ | void setaspectratio(int xasp, int yasp); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Description of setaspectratio ==== | ||
+ | <code c> | ||
+ | setaspectratio changes the default aspect ratio of the graphics system. | ||
+ | The graphics system uses the aspect ratio to make sure that circles are | ||
+ | round onscreen. If circles appear elliptical, the monitor is not aligned | ||
+ | properly. You could correct this in the hardware by realigning the | ||
+ | monitor, but it's easier to change in the software by using | ||
+ | setaspectratio to set the aspect ratio. To obtain the current aspect | ||
+ | ratio from the system, call getaspectratio. | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Example of setaspectratio ==== | ||
+ | <code c> | ||
+ | /* setaspectratio example */ | ||
+ | |||
+ | #include <graphics.h> | ||
+ | #include <stdlib.h> | ||
+ | #include <stdio.h> | ||
+ | #include <conio.h> | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | /* request autodetection */ | ||
+ | int gdriver = DETECT, gmode, errorcode; | ||
+ | int xasp, yasp, midx, midy; | ||
+ | |||
+ | /* initialize graphics and local variables */ | ||
+ | initgraph(&gdriver, &gmode, ""); | ||
+ | |||
+ | |||
+ | /* read result of initialization */ | ||
+ | errorcode = graphresult(); | ||
+ | if (errorcode != grOk) /* an error occurred */ | ||
+ | { | ||
+ | printf("Graphics error: %s\n", grapherrormsg(errorcode)); | ||
+ | |||
+ | printf("Press any key to halt:"); | ||
+ | getch(); | ||
+ | exit(1); /* terminate with an error code */ | ||
+ | } | ||
+ | |||
+ | midx = getmaxx() / 2; | ||
+ | midy = getmaxy() / 2; | ||
+ | setcolor(getmaxcolor()); | ||
+ | |||
+ | /* get current aspect ratio settings */ | ||
+ | getaspectratio(&xasp, &yasp); | ||
+ | |||
+ | /* draw normal circle */ | ||
+ | circle(midx, midy, 100); | ||
+ | getch(); | ||
+ | |||
+ | /* clear the screen */ | ||
+ | cleardevice(); | ||
+ | |||
+ | /* adjust the aspect for a wide circle */ | ||
+ | setaspectratio(xasp/2, yasp); | ||
+ | |||
+ | circle(midx, midy, 100); | ||
+ | getch(); | ||
+ | |||
+ | /* adjust the aspect for a narrow circle */ | ||
+ | cleardevice(); | ||
+ | setaspectratio(xasp, yasp/2); | ||
+ | circle(midx, midy, 100); | ||
+ | |||
+ | /* clean up */ | ||
+ | getch(); | ||
+ | closegraph(); | ||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== See also ==== | ||
+ | [[circle]] | ||
+ | [[getaspectratio]] | ||
+ | |||
+ | |||
+ | ===== output of setaspectratio example ===== | ||
+ | |||
+ | no output of example at the moment | ||
+ | do not hesitate and add it... | ||
+ | |||
+ | |||