void outtextxy(int x, int y, char far *textstring);
void outtext(char far *textstring),
мұндағы (x,y) - textstring адресі бойынша орналасқан мәтіндік жолды
шығару нүктесі координаталарына сәйкес жүргізіледі.
Әріптер өлшемін өзгерту үшін төмендегі функция қолданылады:
void settextstyle(int font, int direction, int charsize),
мұндағы font – әріптер шығару үшін шрифт номері; direction -
бағыты(көлденең немесе тікелей); charsize – шрифт өлшемін ұлғайту
коэффициенті. Мысалы, үнсіздік бойынша қойылған шрифт өлшемін екі есе
ұлғайту үшін settextstyle функциясын келесі түрде шақыруға болады:
settextstyle(DEFAULT_FONT, HORIZ_DIR, 2)
105
Мәтінді шығару тірек нүктесіне қатысты жүргізіледі. Шығарылатын
жолда тірек нүктесі 9 әртүрлі орналасуы мүмкін- жоғарғы сол жақ нүктесі,
жоғарғы орта жақ нүктесі, жоғарғы оң жақ нүктесі және т.б. Тірек нүктесінің
орналасуы void settextjustify(int horiz, int vert) функциясымен өзгереді,
мұндағы horiz және vert бүтін сандары 0, 1, 2 мәндерін қабылдайды. Үнсіздік
бойынша мәтін СР тірек нүктесі мәтін қамтитын кеңістіктің сол жақ жоғарғы
бұрышында болатындай етіп шығарылады.
Мысалы, outtext("ababababa") шақырғаннан кейін шығарылатын мәтін
орналасуы мен СР келесідей болады:
Егер тірек нүктесінің орналасуын settextjustify(1, 1) көмегімен өзгертетін
болсақ, онда outtext("abababa") шақырғаннан кейін CP нүктесі центрде
болады.
7.3 Функцияның графигін салу
Графиктік режимде мәтінмен жұмыс істеу үшін printf және scanf
функцияларына ұқсас функциялардың болғаны пайдалы, бұл функцияларды
айнымалы параметрлер санымен функцияларды жасау мүмкіңдігін
пайдаланып, функцияларды қалай жазуға болатынын мысал арқылы
көрсетейік.
#define ENTER 13
int gscanf(int xsym, int ysym, char *text, ...) {
va_list aptr; char str[140]; int count=0;
va_start(aptr, str );
while ((str[count]=getch())!=ENTER) {
str[count+1]='
\0
';
gprintf(xsym+count,ysym,str+count);
count++ ;
}
vsscanf(str, text, aptr);
va_end(aptr);
return count;
}
int gprintf (int xsym, int ysym, char *text, ... ) {
va_list aptr; char str[140]; int count;
va_start (aptr, text);
count = vsprintf (str, text, aptr);
outtextxy ((xsym-1)*textwidth ("M"),
(ysym-1)*(2+textheight ("M")),str);
va_end (aptr);
return count;
106
}
Мысал 1
. getimage және putimage функцияларының көмегімен экран
бойынша жұлдызды аспан фонында кездейсоқ қозғалатын фигураны
бейнелеу қажет.
#include
#include
#include
#include
int change(int current) {
if (random(32767) > 30000)
{
switch (random(5)) {
case 0: return -2;
case 1: return -1;
case 2: return 0;
case 3: return 1;
case 4: return 2;
}
return current;
}
void main(void) {
int gd = VGA, gm = VGAHI, i;
int StartX = 100, StartY = 50, r = 20;
int ulx, uly, lrx, lry, width, height, size;
int dx = 0, dy = 0;
int do_job = 1;
void * img;
initgraph(&gd, &gm, "c:
Достарыңызбен бөлісу: |