گرافیک

استاد محمد رضا فرقانی

گرافیک

استاد محمد رضا فرقانی

دستورات گرافیکی در C

 میباشد.c وجود دارد که اساس رسم اشکال گرافیکی در Graphic.hیک سری توابع گرافیکی در فایل

لیست آنها را در زیر می بینیم : 

 

arc

bar

bar3d

circle

cleardevice

Clearviewport

closegraph

detectgraph

Drawpoly

ellipse

fillellipse

Fillpoly

floodfill

getarccoords

Getaspectratio

getbkcolor

getcolor

Getdefaultpalette

getdrivername

getfillpattern

Getfillsettings

getgraphmode

getimage

Getlinesettings

getmaxcolor

getmaxmode

getmaxx

getmaxy

getmodename

getmoderange

getpalette

getpalettesize

getpixel

gettextsettings

getviewsettings

getx

gety

graphdefaults

grapherrormsg

graphfreemem

graphgetmem

graphresult

imagesize

initgraph

installuserdriver

installuserfont

line

linerel

lineto

moverel

moveto

outtext

outtextxy

pieslice

putimage

putpixel

rectangle

registerbgidriver

registerfarbgidriver

registerbgifont

registerfarbgifont

restorecrtmode

sector

setactivepage

setallpalette

setaspectratio

setbkcolor

setcolor

setfillpattern

setfillstyle

setgraphbufsize

setgraphmode

setlinestyle

setpalette

setrgbpalette

settextjustify

settextstyle

setusercharsize

setviewport

setvisualpage

setwritemode

 

textheight

textwidth

 

 

 

ARC1- دستور العمل

فرمت دستور العمل:

ARC(intx,inty,stangle,int,endangle,int,radius);

: این دستور العمل یک کمان رسم میکند و در آن

 مختصات مرکزy وx-

 زاویه شروعstangle -

 زاویه پایانendangle -

 شعاع دایره استradius - 

 

BAR2- دستور العمل

فرمت دستور العمل:

BAR(intleft,inttop,intright,intbottom);

در اجرای این دستور العمل یک مستطیل رسم میشود.

           : مختصات گوشه بالای سمت چپintleft,inttop

   : مختصات گوشه پائینی سمت راستintright,intbottom 

 

BAR3D3- دستور العمل

فرمت دستور العمل:

BAR3D(intleft,inttop,intright,intbottom,intdepth,inttopflag);

در اجرای این دستور العمل یک ستون سه بعدی  رسم میشود.

           : مختصات گوشه بالای سمت چپintleft,inttop

   : مختصات گوشه پائینی سمت راستintright,intbottom

عمق ستون سه بعدی  Intdepth

    

    Circle4- دستور العمل

در اجرای این دستور العمل یک دایره رسم میشود.

CIRCLE(intx,inty,radius);

 شعاع دایره است.raduse مختصات مرکز وy و xدر این دستور العمل  

 

Cleardevice 5- دستور العمل 

در اجرای این دستور العمل صفحه گرافیکی نمایش پاک میشود

Cleardevice();

Clearviewport 6- دستور العمل

در اجرای این دستور العمل پنجره موجود داده پاک میشود

Clearviewport();

Closegraph 7- دستور العمل

در اجرای این دستور العمل سیستم  گرافیکی بسته میشود

Closegraph() 

detectgraph 8-دستور العمل

در اجرای این دستور العمل درایور گرافیکی سیستم ارائه داده میشود

Detectgraph(int graphdriver ,int graphmode);

عدد مربوط به راه انداز گرافیکی را با توجه به جدول زیر برمیگرد اند: int graphdriver

عدد مربوط به مد راه انداز گرافیکی را با توجه به جدول زیر برمیگرد اند: int graphmode

 

drawpoly9- دستور العمل

Drawpoly(int numpoint,int far polypoints);

 بر اساس پارامتر اول به زوجPoly pointدر اجرای فرمان یک چند ضلعی رسم میشود و در ان

مقادیر مراجعه میکند که هر کدام مختصات یک نقطه از چند ضلعی است.

 

 

Ellipse 10- دستور العمل

این دستور العمل یک بیضی رسم میکند

فرم کلی آن چنین است:

ellipse(int x, int y, int stangle, int endangle,int xradius, int yradius);

که در آن دو متغیر اول مختصات مرکز و دو متغیر بعد شروع و پایان بیضی و متغیر های آخر شعاع افقی و عمودی هستند

 

 مختصات سطر و ستون محل قرار گیری بیضی :int x, int y

 زاویه شروع رسم بیضی :int stangle

 : زاویه پایانی رسم بیضیint endangle

: اندازه شعاع افقی بیضیint xradius

: اندازه شعاع عمودی بیضیint yradius

 

Fill Ellipse 11- دستور العمل

این دستور العمل یک بیضی تو پور را  رسم میکند

فرم کلی آن چنین است:

fillellipse(int x, int y, int stangle, int endangle,

int xradius, int yradius);

که در آن دو متغیر اول مختصات مرکز و دو متغیر بعد شروع و پایان بیضی و متغیر های آخر شعاع افقی و عمودی هستند

 

 مختصات سطر و ستون محل قرار گیری بیضی :int x, int y

 زاویه شروع رسم بیضی :int stangle

 : زاویه پایانی رسم بیضیint endangle

: اندازه شعاع افقی بیضیint xradius

: اندازه شعاع عمودی بیضیint yradius

 

 

 

Fill poly 12- دستور العمل

این دستور العمل یک چند ضلعی را رسم میکند و داخل آنرا پر میکند

فرم کلی آن چنین است:

fillpoly(int numpoints, int far *polypoints);

 

که در آن به تعداد پارامتر اول پارامتر دوم موجود است

 

 

floodfill 13- دستور العمل

در اجرای این دستور یک محدوده بسته با نمونه مشخصی پر میشود

فرم کلی آن چنین است:

floodfill(int x, int y, int border);

 

get arc coords 14- دستور العمل

در اجرای این دستور العمل مختصات آخرین نقطه مان را به دست میدهد

getarccoords(struct arccoordstype far *arccoords);

 

getaspectratio 15- دستور العمل

فرم کلی آن چنین است:

  getaspectratio(int far *xasp, int far *yasp);

در اجرای این دستور العمل نسبت جاری بین مختصات در وضعیت گرافیکی موجود ارائه میشود

 

getbkcolor16- دستور العمل

این دستور العمل کد رنگ زمینه گراف را نشان میدهد

getbkcolor(void);

 

get color17-دستور العمل

در اجرای این دستور العمل رنگ جاری سیستم گرافیکی ارائه میشود

فرم کلی آن چنین است:

getcolor(void);

 

Get default palette18-دستور العمل

این دستور العمل ساختار پالت را بر میگرداند

فرم کلی آن چنین است:

getdefaultpalette(void);

 

Get driver name19-دستور العمل

این دستور العمل نام درایور جاری سیستم را ارائه میدهد

فرم کلی آن چنین است:

getfillpattern(char far *pattern);

 

Get fill pattern20-دستور العمل

این دستور العمل نمونه طراحی ساخت کاربر را به حافظه کپی میکند

فرم کلی آن چنین است:

getfillpattern(char far *pattern);

 

Get fill setting21-دستور العمل

این دستور العمل اطلاعاتی در مورد نمونه طراحی مورد عمل در وضع موجود سیستم گرافیکی را ارائه میدهد

فرم کلی آن چنین است:

getfillsettings (struct fillsettingstype far *fillinfo);

 

Get graphmode22-دستور العمل

با اجرای این دستور العمل مد گرافیکی موجود به سیستم باز میگردد.

فرم کلی آن چنین است:

getgraphmode(void);

 

Get image23-دستورالعمل

بخش مشخصی از صفحه نمایش را به حافظه منتقل میکند

فرم کلی آن چنین است:

getimage(int left, int top, int right, int bottom,void far *bitmap);

 

get line setting24-دستور العمل

این دستور العمل نوع و نمونه و ضخامت خط جاری را ارائه میدهد

فرم کلی آن چنین است:

getlinesettings(struct linesettingstype far *lineinfo);

 

get max color25- دستور العمل

این دستور العمل یزرگترین عدد مربوط به نگ کامپیوتر را به برنامه برگشت میدهد

فرم کلی آن چنین است:

getmaxcolor(void);

 

get max mode name26- دستور العمل

این دستور العمل ماکزیمم شماره مد جاری سیستم گرافیکی را نشان میدهد

فرم کلی آن چنین است:

getmaxmode(void);

 

 get max x27- دستور العمل

 از مختصات صفحه نمایش را نشان میدهدxاین دستور العمل ماکزیمم

فرم کلی آن چنین است:

getmaxx(void);

 

get max y28- دستور العمل

از مختصات صفحه نمایش را نشان میدهد yاین دستور العمل ماکزیمم

فرم کلی آن چنین است:

getmaxy(void);

 

get mode name29-دستور العمل

این دستور العمل اشاره گری را باز میگرداند که به نام مد گرافیکی اشاره میکند

فرم ˜کلی آن چنین است:

getmodename(int mode_number);

 

Get mode arrange30- دستور العمل

این دستور العمل دامنه مد برای درایو گرافیکی داده شده را به دست میدهد

فرم کلی آن چنین است:

getmoderrange(int graphdriver, int far *lomode, int far*himode);

 

get palette31- دستور العمل

این دستور العمل اطلاعاتی در مورد پالت جاری به دست میدهد

فرم کلی آن چنین است:

getpalette(struct palettetype far *palette);

 

get pallet size32- دستور العمل

این دستور العمل اندازه جدول و رنگ پالت را نشان میدهد

فرم کلی آن چنین است:

getpalettesize(void);

 

Get pixel33- دستور العمل

این دستور العمل رنگ نقطه مشخص را به دست می دهد

فرم کلی آن چنین است:

getpixel(int x, int y);

 

get text setting 34- دستور العمل

این دستور العمل اطلاعاتی را در مورد فونتهای متن گرافیکی جاری را به دست میدهد

فرم کلی آن چنین است:

  gettextsettings(struct textsettingstype far *texttypeinfo);

 

Get view setting35- دستور العمل

این دستور العمل اطلاعاتی درباره پنجره دید جاری را نشان میدهد

فرم کلی آن چنین است:

getviewsettings (struct viewporttype far *viewport);

 

Get x36- دستور العمل

این دستور العمل طول نقطه جاری را ارائه میدهد

فرم کلی آن چنین است:

getx(void);

 

Get y37- دستور العمل

این دستور العمل عرض نقطه جاری را ارائه میدهد

فرم کلی آن چنین است:

gety(void);

 

graph defaults38- دستور العمل

این دستور العمل تنضیمات گرافیکی را به وضع اول باز میگرداند

فرم کلی آن چنین است:

graphdefaults(void);    

 

graph error39- دستور العمل

این دستور العمل اشاره گری را به برنامه باز میگرداند که به پیغام مربوط به اشتباه اشاره میکند

فرم کلی آن چنین است:

grapherrormsg(int errorcode);

 

graph get mem40- دستور العمل

این دستور العمل میزان حافظه لازم برای بارگذاری برنامه جاری را نشان میدهد

فرم کلی آن چنین است:

graphgetmem(unsigned size);

 

graph free mem41- دستور العمل

این دستور العمل میزان حافظه مربوط به گراف را کنترل میکند

فرم کلی آن چنین است:

graphfreemem(void far *ptr, unsigned size);

 

graph result42- دستور العمل

این دستور العمل کد اشتباه را در مورد آخریت عمل ناموفق ارئه میدهد

فرم کلی آن چنین است:

graphresult(void);

 

image size43- دستور العمل

 را اعلام میداردBit imageاین دستور العمل تعداد بایتهای لازم برای ذخیره یک

فرم کلی آن چنین است:

imagesize(int left, int top, int right, int bottom);

 

initgraph44- دستور العمل

این دستور العمل سیستم گرافیکی را آماده کار میسازد

فرم کلی آن چنین است:

initgraph(int far *graphdriver,

int far *graphmode, char far *pathtodriver);

 

Install user driver 45- دستور العمل

این دستور العمل یک ذرایو را به جدول درایوها اضافه میکند

فرم کلی آن چنین است:

installuserdriver(char far *name, int huge (*detect)(void));

 

Install user font(char name)46- دستور العمل

 می آوردbgi   را به سیستم chrاین دستور العمل فایل فونت با پسوند

فرم کلی آن چنین است:

installuserfont(char far *name);

 

line47- دستور العمل

این دستور العمل یک خط رسم میکند

فرم کلی آن چنین است:

linel(int dx, int dy);

 

linerel48- دستور العمل

این دستور العمل از محل چاپ گرافیک به نقطه معین خط رسم میکند

فرم کلی آن چنین است:

linerel(int dx, int dy);

 

Line ot49- دستور العمل

این دستور العمل از نقطه جاری به نقطه مشخص شده خطی رسم می نماید

فرم کلی آن چنین است:

lineto(int x, int y);

 

moverel50- دستور العمل

این دستور العمل محل فعلی گرافیکی را به فاصله معینی جلو یا عقب میبرد

فرم کلی آن چنین است:

moverel(int dx, int dy);

 Move to51- دستور العمل

 هدایت میکند(x,y)این دستور العمل کنترل را به نقطه

فرم کلی آن چنین است:

moveto(int x, int y);

out text52- دستور العمل

این دستور العمل یک رشته کاراکتر را در پنجره نشان میدهد

فرم کلی آن چنین است:

outtext(char far *textstring);

 

Out text xy53- دستور العمل

این دستور العمل یک رشته کاراکتری را در محل مورد نظر نمایش میدهد

فرم کلی آن چنین است:

outtextxy(int x, int y, char far *textstring);

 

 pie slice  54- دستور العمل

این دستور العمل یک قطاع دایره را رسم میکند و آن را پر میکند

فرم کلی آن چنین است:

pieslice(int x, int y, int stangle, int endangle, int radius);

 

Put image   55- دستور العمل

این دستور العمل یک بخش از صفحه تصویر را به خروجی میفرستد

فرم کلی آن چنین است:

putimage(int left, int top, void far *bitmap, int op);

 

 Put picxel56- دستور العمل

این دستور العمل یک نقطه را در محل مورد نظر و به رنگ مطلوب رسم میکند

فرم کلی آن چنین است:

putpixel(int x, int y, int color);

 

rectangle 57- دستور العمل

این دستور العمل یک مستطیل رسم میکند

فرم کلی آن چنین است:

rectangle(int left, int top, int right, int bottom);

 

register  bgi driver 58- دستور العمل

این دستور العمل درایو گرافیکی را ثبت میکند

فرم کلی آن چنین است:

registerbgidriver(void (*driver)(void));

 

 register bgi font 59- دستور العمل  

این دستور العمل کد مربوط به قلم مورد نظر را ثبت میکند

فرم کلی آن چنین است:

registerbgifont(void (*font)(void));

 

Register crt mode60- دستور العمل

 این دستور العمل مد صفحه نمایش را به وضع اولیه بر میگرداند

فرم کلی آن چنین است:

Registercrtmode(void)

 

Sector 61- دستور العمل

این دستور العمل یک بخش از دایره را رسم میکند و آن را از نمونه مورد نظر پر میکند

فرم کلی آن چنین است:

sector(int x, int y, int stangle, int endangle,int xradius, intyradius);

 

set active page62- دستور العمل

این دستور العمل صفحه فعال از صفحه نمایش را مشخص و تنظیم میکند

فرم کلی آن چنین است:

Setactivepage(int page);

 

Set all palette63- دستور العمل

این دستور العمل تمام رنگهای پالت را بر اساس رنگهای مورد نظر تغییر میدهد

فرم کلی آن چنین است:

setallpalette(struct palettetype far *palette);

 

set aspect ratio64- دستور العمل

این دستور العمل نسبت بین طول و عرض صفحه نمایش را تعیین میکند

فرم کلی آن چنین است:

setaspectratio(int xasp, int yasp);

 

set bk color65- دستور العمل

این دستور العمل بر اساس پالت موجود رنگ زمینه را تعیین میکند

فرم کلی آن چنین است:

setbkcolor(int color);

 

Set color66- دستور العمل

فرم کلی آن چنین است:

setcolor(int color);

 

set fill pattern67- دستور العمل

این دستور العمل یک نمونه طرح ساخت کاربر را تعیین میکند

فرم کلی آن چنین است:

setfillpattern(char far *upattern, int color);

 

 

set fill style68- دستور العمل

این دستور العمل طرح نمونه برای پر کردن اشکال و رنگ آن را تعیین مینماید

فرم کلی آن چنین است:

setfillstyle(int pattern, int color);

 

 set graph buf size69- دستور العمل

این دستور العمل اندازه بافر گرافیک را تعیین میکند

فرم کلی آن چنین است:

setgraphbufsize(unsigned bufsize);

 

set graph mode70- دستور العمل

این دستور العمل مد گرافیکی سیستم را تعیین کرده صفحه نمایش را پاک میکند

فرم کلی آن چنین است:

setgraphmode(intmode);

 

set palette71- دستور العمل

این دستور العمل همه رنگهای پالت را تغییر میدهد

فرم کلی آن چنین است:

setpalette(int colornum, int color);

 

set rgb palette72- دستور العمل

 را تعیین میکندibm-8514این دستور العمل رنگ کارت گرافیکی

فرم کلی آن چنین است:

setrgbpalette(int colornum, int red, int green, int blue);

 

Setline style73- دستور العمل

این دستور العمل نوع خط و یا نمونه خط را تعیین مینماید

فرم کلی آن چنین است:

setlinestyle(int linestyle, unsigned upattern, int thickness);

 

set text justify74- دستور العمل

این دستور العمل

فرم کلی آن چنین است:

settextjustify(int horiz, int vert);

 

set text style75- دستور العمل

این دستور العمل ویژگیهای متن را در وضع خاص تنظیم میکند

فرم کلی آن چنین است:

settextstyle(int font, int direction, int charsize);

 

Set user char size76- دستور العمل

این دستور العمل برای فونتهای مورد نظر اندازه تعیین میکند

فرم کلی آن چنین است:

setusercharsize(intmultx, int divx, int multy, int divy);

 

Set view port77- دستور العمل

این دستور العمل پنجره جاری را جهت خروجی گرافیک آماده میسازد

فرم کلی آن چنین است:

setviewport(intleft,inttop,intright,intbottom,intclip);

 

set visual page78-تابع

 

فرم کلی آن چنین است:

setvisualpage(int page);

set write mode79- دستور العمل

این دستور العمل مد نوشتن برای وضعیت گرافیکی موجود را تعیین میکند

فرم ˜کلی آن چنین است:

setwritemode(int mode);

 

Text height80- دستور العمل

این دستور العمل ارتفاع کاراکترها را بر حسب نقطه تصویری بر میگرداند

فرم کلی آن چنین است:

textheight(char far *textstring);

 

Text width81- دستور العمل

این دستور العمل عرض کاراکترها را بر حسب نقطه تصویری بر میگرداند

فرم کلی آن چنین است:

textwidth(char far *textstring);

برنامه نویسی ماوس در Turbo C

با توجه به این که برنامه های تحت داس رابط ضعیفی نسبت به ویندوز و لینوکس و... دارند ما حداقل باید برنامه هایمان را به ماوس مجهز کنیم تا این نقص تا حدودی برطرف شود. مخصوصا اگر بخواهیم یک برنامه گرافیکی بنویسیم برنامه مان بدون ماوس غیر قابل استفاده خواهد بود. خب بهتره بریم سر اصل مطلب. در این مقاله فعال کردن ماوس در زبان C توضیح داده شده. البته ما ماوس را با استفاده از وقفه ها که در تمام کامپیوترهای IBM یکی هستند فعال می کنیم و کدهای ارائه شده با کمی تغییر در پاسکال و بیسیک نیز کار خواهند کرد. اگر شما با زبان C آشنایی ندارید ممکن است این کدها برایتان ناآشنا باشند. پس بهتر است از خواندن این مقاله صرفنظر کنید. البته ممکن است به زودی آموزش C و ++C را نیز در این سایت بگذاریم. ابتدا برای این که از ماوس استفاده کنیم باید بفهمیم که درایور ماوس نصب شده یا نه؟ اگر نصب نشده باشد نمی توان ماوس را فعال کرد. برای این کار از تابع شماره 00hex از وقفه 33hex استفاده می کنیم. اگر قبلا با وقفه ها کار کرده باشید حتما می دانید که شماره تابع وقفه در ثبات AH قرار می گیرد ولی توابع 33hex به جای AH از AX استفاده می کنند. یعنی برای فراخوانی این وقفه شماره تابع آن را در ثبات AX قرار می دهیم. پس از فراخوانی این وقفه اگر مقدار ثبات AX برابر 0000hex باشد یعنی درایور ماوس نصب نشده و ما نمیتوانیم از ماوس استفاده کنیم. پس از این کار باید نشانگر ماوس را د ر صفحه ظاهر کنیم. نشانگر ماوس دقیقا در وسط صفحه ظاهر خواهد شد. اگر در حالت متنی باشیم این نشانگر به صورت یک مستطیل و اگر در حالت گرافیکی باشیم نشانگر به صورت یک فلش کوچک نشان داده خواهد شد. برای ظاهر کردن کافی است از تابع شماره 01 وقفه 33h استفاده کنیم. برنامه زیر هم درایور ماوس را تشخیص داده و هم آن را در حالت متنی نشان میدهد:

#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main()
{ union REGS r;
clrscr();
r.x.ax= 0;
int86(0x33,&r,&r);
if(r.x.ax==0)
{
printf("No Mouse Available.....");
getch();
exit(1);
}
r.x.ax=1;//place 01 in AX register
int86(0x33,&r,&r);//showing the mouse pointer
printf(“press any key to exit…”);
getch();
}

تابع مفید دیگری برای کار با ماوس تابع 02 از وقفه 33hex میباشد. این تابع نشانگر ماوس را پنهان می کند. فرض کنید می خواهید مانند برنامه Paint وقتی ماوس را میکشید یک خط هم با آن کشیده شود. در این حالت اگر نشانگر ماوس دیده شود بعضی از نقاط خط پاک خواهند شد و بهتر است که در این مواقع نشانگر را پنهان کنیم. بعدا مثال کاملتری برایتان خواهم نوشت. برای کار با ماوس ما باید بدانیم که نشانگر اکنون د رکجای صفحه می باشد یعنی مختصات (x,y) آن را بدست آوریم. برای این کار از تابع شماره 03 استفاده می کنیم. که پس از فراخوانی تابع ثبات CX حاوی مختصات افقی(x) و DX حاوی مختصات عمودی نشانگر خواهد بود. کار مهم دیگر تشخیص کلیدهای فشرده شده ماوس است. تابع 03 همچنین تعیین می کند که کدام کلید از ماوس فشرده شده است. این کلیدها را ثبات BX تعیین میکند. فقط همین کافی است که بدانید پس از فراخوانی وقفه اگر BX برابر با (00000001)Hex باشد کلید چپ ماوس فشار داده شده است. راجع به فشار دادن کلیدهای دیگر اگر علاقه مند بودید به من ایمیل بزنید تا نحوه تشخیص آنها را هم بنویسم.
 مثال زیر نحوه کار را مشخص می کند:< /
P>< /P>

#include <STDIO.H>
#include <CONIO.H>
#include <STDLIB.H>
#include <DOS.H>
void main() {
union REGS i,o;
clrscr();
i.x.ax=0;
int86(0x33,&i,&o);
if(o.x.ax==0) {
printf("No Mouse Available...");
exit(1);
}
i.x.ax=1;
int86(0x33,&i,&o);
gotoxy(25,23);
printf("Press any key to exit...");
while(!kbhit())
{
i.x.ax=3;
int86(0x33,&i,&o);
gotoxy(2,2);
printf("x->co-ordinate=(%d) \n y->co-ordinate=(%d) ",o.x.cx,o.x.dx);
if(o.x.bx==0x01) printf(“Right button of mouse pressed.”); }
i.x.ax=2; int86(0x33,&i,&o);
}

برای پایان کار می خواهیم یک برنامه که ابزار pencil برنامه های گرافیکی را شبیه سازی می کند بنویسیم. برای این کار ما ابتداصفحه را درحالت گرافیکی قرار می دهیم برای این که برنامه زیر کار کند در دستور initgraph(&gd,&gm,""); در داخل کوتیشن مسیرفایلهای .bgi را می نویسیم.

#include <CONIO.H>
#include <STDIO.H>
#include <STDLIB.H>
#include <GRAPHICS.H>
#include <DOS.H>
union REGS i,o;
main() {
int show_mouse();
int hide_mouse();
int get_mouse_pos(int *,int *,int *);
int gd=DETECT,gm,button,x1,y1,x2,y2;
initgraph(&gd,&gm,"");
i.x.ax=0; int86(0x33,&i,&o);
if(o.x.ax==0)
{ printf("No Mouse is available..");
exit(1);
restorecrtmode();
}
outtextxy(230,400,"Press any key to exit....");
while(!kbhit())
{
show_mouse(); get_mouse_pos(&x1,&y1,&button);
x2=x1;
y2=y1;
while(button==1) {
hide_mouse();
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
get_mouse_pos(&x2,&y2,&button); }
}
restorecrtmode();
} show_mouse()
{
i.x.ax=1; int86(0x33,&i,&o);
}
hide_mouse()
{
i.x.ax=2; int86(0x33,&i,&o);
}
get_mouse_pos(int *x,int *y,int *button)
{
i.x.ax=3;
int86(0x33,&i,&o);
*x=o.x.cx;
*y=o.x.dx; *button=o.x.bx&1;
}

سوالات تحقیقی پژوهشی فصل چهارم صفحه 71

1)       الگوریتم مطرح شده جهت رسم خط با نقطه در این فصل را با الگوریتم برزنهام و الگوریتم DDA یا همان Digital Differential Analyser مقایسه کنید. این الگوریتم ها چه تفاوتی دارند؟
مزایا و معایب هر کدام را بررسی کنید.
آیا میتوانید از طریق اینترنت ، الگوریتم دیگری برای رسم پیدا کنید.

2)      کاربرد دستور Line,Lineto,Linerel را از طریق Help زبان c تحقیق کنید و مثالهای موجود در راهنما را با copy-paste نمودن به Editor زبان c ، مشاهده و از آن اجرا بگیرید.
 Line   : این تابع خطی را که با رنگی که مشخص می شود در مختصات (x1,y1) تا (x2 , y2) رسم می کند.
Lineto   : خطی را از موقیت جاری تا نقظه دلخواه رسم می کند.
Linerel   : خطی را از موقیت جاری تا نقطه ای که مختصات آن نسبت به خط جاری داده شده رسم می کند.

3)     اگر بتوان کوچکترین خط را نقطه تصور نمود ، چگونه میتوان فقط با دستور line و حلقه for یک خط چین رسم نمود.

4)      اگر مختصات یک پیکسل روی مانیتور وجود نداشته باشد،خروجی آن چیست؟ مثلا اگر ریزولوشن 480*640 باشد ، نتیجه اجرای دستورات زیر چیست؟  

Putpixel(1000,500);

Line(100,200,800,700);

5)      در الگوریتم مطرح شده برای رسم خط با نقطه، چهار حالت مختلف شیب را برریب و حالات استثنایی را بررسی و راه حلی برای برطرف کردن مشکل ، ارائه نمایید.

6)      نحوه رسم اشکال سه ضلعی(مثلث) و چهارضلعی(مربع،مستطیل،متوازی الاضلاع،ذوزنقه) و یا چند ضلعی یک بعدی و دو بعدی با دستور رسم خط را به دو شکل تو خالی و تو پر بررسی و آنها را با هم مقایسه کنید.

7)      نحوه استفاده و کاربرد دستور setlinestyle و setwritemode را از طریق Help زبان C بررسی کنید.

تمرین کارگاهی فصل سوم صفحه54

1)       برنامه ای بنویسید که از بخشی از مانیتور عکس گرفته و آنرا در درون یک فایل تصویری ذخیره کند.برنامه برای فراخوانی این تصویر نیز بنویسید.

2)      برنامه ای بنویسید که در هنگام انجام عمل قرینه سازی ، عمل نگاتیو را انجام دهد.

3)     نحوه انجام عمل دوران با زوایای 90 یا 180 یا 270 درجه ای روی مانیتور را تحقیق کنید.

4)      برنامه ای بنویسید که از محتویات مانیتور بطور کامل عکس گرفته و آن را در اندازه یک دهم آن در یک پنجره کوچک در کنار یکی از گوشه های مانیتور رسم کند.(به این کار اصطلاحا Picture to Picture گفته می شود.)

5)      برنامه ای بنویسید که انیمیشن ریزش کلیه پیکسلهای مانیتور در پائین مانیتور(همانند ریزش کوه) را شبیه سازی کند.

6)      برنامه ای بنویسید که با فشردن کلیدهای جهتی ، تصویر روی مانیتور به جهت مورد نظر حرکت داده شود.

7)      برنامه ای بنویسید که ابتدا مانیتور را با یک خط عمودی به دو قسمت تقسیم و کاربر بتواند پیکسلی را با کلیدهای جهتی در پنل سمت چپ به حرکت در آورد و با قرینه سازی حرکت پیکسل همانند تصویری در آینه ، قرینه کامل تصویر رسم شده در پنجره سمت راست نمایش داده شود.

8)      برنامه ای بنویسید که ابتدا تصویری در گوشه سمت چپ و باا رسم و سپس عمل Paste کردن را به تعداد زیاد در مکانهای متفاوتی از مانیتور به گونه ای انجام دهد که 9 تصویر همانند هم و در کنار هم شبیه کاشیهای کنار هم (Tile) نمایش داده شود.

9)       برنامه ای بنویسید که ابتدا تصویری در گوشه سمت چپ و بالا رسم و سپس عمل Paste کردن را همراه با Italic نمودن تصویر انجام دهد.در این تمرین اگر در مبدا مستطیلی رسم شده باشد،در مقصد به متوازی الاضلاع تبدیل خواهد شد و یا اگر متنی باشد،به حالت مورب(Italic) نمایش داده خواهد شد.

10)    برنامه ای بنویسید که ابتدا شکل دلخواهی روی مانیتور رسم و با فشرده شدن کلیدی ، بدون هیچگونه جابجایی در مختصات پیکسلها ، رنگ تمام پیکسلهای موجود روی مانیتور را Negative  کند.

11)     با استفاده از تکنیک ذخیره رنگ پکسلها در یک ماتریس m*n و سپس جابجایی داده های موجود در این ماتریس و سپس نمایش تصویر موجود در ماتریس تغییر کرده روی مانیتور،عملیات نگاتیو سازی،قرینه سازی،چرخش(با زوایای مختلف) و Zooming و یا عملیات های دیگر قابل انجام را امتحان کنید.

سوالات تحقیقی پژوهشی فصل سوم صفحه 53

1)       کاربرد دستورات getx() و gety() و getcolor()  را در پیدا کردن شماره رنگ جاری و همچنین موقعیت جاری مکان نمای محیط گرافیکی ، را با دستورات getpixel مقایسه کنید.

2)      به نظر شما چه تفاوتی بین فرمتهای مختلف فایلهای تصویری مثل bmp و pcx و jpg وجود دارد؟ برنامه های مطرح شده در این فصل به کدام نزدیکتر است؟چرا؟
در مقدار حجمشان با هم تفاوت دارند اما همگی حجم نسبتا زیادی دارند. برنامه های این فصل به bmp نزدیکتر است چون به صورت نقطه ای می باشد.

3)     برای zoom کردن یک فونت ، یعنی افزایش . کاهش همزمان طولی و عرضی یک رشته نمایش داده شده، چه روشی پیشنهاد می کنید؟

4)      با مراجعه به راهنمای زبان c درباره دستورات getimage و putimage که دستورات copy-paste نمودن بخشی یا کل صفحه می باشند،تحقیق کنید.حافظه clipboard چه ارتباطی با این مبحث دارد؟

5)      نحوه انجام کارهایی از قبیل Flip افقی و عمودی و Rotate و Negative و Stretch و Skew (ایتالیک کردن تصاویر) در نرم افزار Paint را بررسی کنید.

تمرین کارگاهی فصل دوم صفحه 40

1)    عملکرد دستور getmaxcolor() را برای مشخص شدن شماره آخرین رنگ قابل نمایش در مد گرافیکی جاری بررسی کنید. چگونه میتوان از این عدد ، عمق رنگ را بر حسب بیت یا بایت بدست آورد؟
getmaxcolor() آخرین رنگ قابل نمایش را می گیرد.      Log getmaxcolor 2 = عمق رنگ

2)   با توجه به سه تابع مطرح شده در سوالات قبلی ، چگونه میتوان حداقل حافظه مورد نیاز برای بافر کارت گرافیک را محاسبه نمود؟
getmaxcolor * getmaxx * getmaxy = حداقل ظرفیت حافظه کارت گرافیک

3)  اگر در آدرس دهی مختصات یک پیکسل و یا شماره دهی رنگها ، عددی بیش از ماکزیمم شماره مشخص شده ، تایپ کنیم ، چه حالتی اتفاق می افتد؟ مثال بزنید.
مثلا رنج رنگها 15 است . اگر 16 دادیم بر میگردد به اول رنج و می شود همان عدد صفر  یعنی رنگ سیاه .

4)   برنامه ای بنویسید که 9 پیکسل مهم دور تا دور ، وسط مانیتور و وسط سطرها و ستونهای اصلی مانیتور را با رنگهای متنوع نمایش دهد.

#include<graphics.h>

#include<stdio.h>

{ int gdriver , gmode;

Gdriver=DETECT;

Initgraph(&gdriver,&gmode,”c:\\tc\\bgi”);

Put pixel(320,240,15);

Put pixel(0,0,15);

Put pixel(0,240,15);

Put pixel (0,479,15);

Put pixel (320,0,15);

Put pixel (639,0,15);

Put pixel (639,240,15);

Put pixel (639,479,15);

Put pixel (320,479,15);

Getch();

Close graph();

}

5)   برنامه ای بنویسید که کادر دور مانیتور را به ضخامت یک پیکسل در اطراف مانیتور نمایش دهد.

#include<graphics.h>

#include<stdio.h>

Main()

Gdriver=DETECT;

Initgraph(&gdriver,&gmode,”c:\\tc\\bgi”);

For*i=0;i<639;i++)

{

Put pixel(I,0,15);

Put pixel(I ,479,15);

}

For(j-0;j<479;j++)

{

Put pixel(0,j,15);

Put pixel(639,j,15);

}

Getch();

Close graph();

}

6)      برنامه ای بنویسید که با استفاده از دو حلقه for تو در تو، کلیه پیکسل های مانیتور را با شماره رنگ دلخواه کاربر، رنگ کند.(به عبارت دیگر صفحه نمایش را پاک کند.)

7)      برنامه ای بنویسید که مختصات نقطه بالا و سمت چپ یک مربع و هم چنین طول ضلع یک مربع را گرفته و با دستور putpixel و با استفاده از حلقه های for ، یک مربع توخالی و همچنین یک مربع تو پر رسم کند.

8)      برنامه ای بنویسید که با استفاده از دستور putpixel ، سه مستطیل رنگی افقی و هم اندازه ، به عنوان سه رنگ پرچم ایران نمایش دهد.

9)       برنامه ای بنویسید که تمام ستونها و سطرهای مانیتور را بصورت یک در میان(هم ستونی و هم سطری) به شکل مجموعه ای از خطوط افقی و عمودی شطرنجی تقسیم کند.فاصله خطوط افقی و یا عمودی از همدیگر،یک پیکسل باشد.

10)    برنامه ای بنویسید که انیمیشن حرکت یک خط افقی یا عمودی بزرگ شونده را نمایش دهد.(اینکار با رنگ نمودن پیکسل های متوالی یک خط بدون پاک کردن رد پای آنها و با تاخیر زمانی مناسبی انجام می گیرد.)

11)     برنامه ای بنویسید که در ابتدا پیکسل وسط مانیتور نمایش داده شده و در بازه های زمانی یک دهم ثانیه حرکت متوالی و پیوسته این پیکسل به جهات مختلف بدون دخالت کاربر و به شکل یک Demo نمایش داده شود.این برنامه را به گونه دیگری بازنویسی کنید که رد پای حرکت پیکسل روی مانیتور باقی بماند.

12)    با توجه به اینکه دستور cleardevice کل صفحه را پاک می کند،عملکرد دو دستور زیر را برای پاک کردن بخشی از مانیتور بررسی کنید.

Setviewport(0,0,100,150,CLIP_ON);
clearviewport();

13)   نحوه نصب یک درایور جدید مثلا کارت گرافیک از نوع SVGA یا XGA با ریزولوشن 768*1024 را با استفاده از دستورات installuserdriver و  regisrwebgidriver تجربه کنید.

سوالات تحقیقی پژوهشی فصل دوم صفحه 39

1)       نام و کاربرد چند Include file مرتبط با مباحث گرافیکی در زبان C را تحقیق گنید
graphics.h  : برای استفاده از هرگونه دستور گرافیکی ،باید از این include استفاده کرد که محتوی بیش از یکصد تابع گرافیکی می باشد.
conio.h : برای اجرا شدن تابع  kbhit() لازم است .
stdlib.h, time.h : جهت اجرا شدن تابع random()
dos.h
 : جهت اجرای تابع delay می باشد که این تابع دستورات را به مدت زمانیکه در پرانتز نوشته شده به تاخیر می اندازد.

2)      عبارت initgraph که مخفف Initializing Graphic Driver & Graphic Mode  می باشد ، به چه معناست و چرا نوشتن این دستور در ایتدای هر برنامه گرافیکی اجباری است؟
initgraph دستور Load کننده درایور و فعال کننده کارت گرافیک برای انجام امور گرافیکی می باشد.
این دستور علاوه بر پاک کردن مانیتور آنرا از حالت متنی به حالت گرافیکی مشخص شده توسط متغیرهای
gdriver و gmode  تبدیل می کند. اگر این دستور بدون خطا و به خوبی اجرا شود ، مانیتور به حالت گرافیکی رفته و از آن لحظه به بعد پیکسلهای مانیتور قابل آدرس دهی ، کنترل و رنگ آمیزی است.

3)     عملکرد کلمه رزرو شده BLINK را به عنوان یک رنگ در دستور SETCOLOR ، بررسی کنید.

4)      از طریق راهنمای زبان C درباره دستورات زیر تحقیق کنید.

Getmaxcolor  : شماره آخرین رنگ روی مانیتور(مقادیر صفحه نمایش را که در تشخیص resolution کاربرد دارند بر میگرداند.)
Getmaxx
: شماره آخرین ستون قابل نمایش روی مانیتور
Getmaxy
: شماره آخرین سطر روی مانیتور

Getx : مختصات مکان جاری را برمیگرداند

Gety : مختصات مکان جاری را برمیگرداند

Getcolor : این تابع رنگی را که برنامه فعلا با آن کار می کند بر میگرداند و در جاهایی را که رنگ تغییر می کند کاربرد دارد.

Getbkcolor : شماره رنگ پس زمینه را بر میگرداند.

Getdrivename

Getmaxmodename

Getmodename

Getmoderang

تمرین کارگاهی فصل اول – صفحه 23

1)        نقاشی دلخواهی در Paint  رسم نموده و آنرا با استفاده از فرمتهای مختلف تعریف شده در قسمت Save as ذخیره نموده و سپس این فایل ها که پسوندهای مختلفی دارند را از نظر اندازه مقایسه کنید.چه نتایجی میگیرید؟
تصاویر Raster به عنوان Bitmap هم شناخته می شوند. آنها از مربعهایی کوچک به نام pixel ساخته شده اند. کیفیت این تصاویر بستگی به تعداد کل pixel های موجود در آن دارد (resolution). آنها مستقل از resolution نیستند و ممکن است در اثر تغییر اندازه کیفیت خود را از دست بدهند.

2)      در نرم افزار Paint   بدون رسم طرح و یا نقاشی روی بوم نقاشی آنرا ذخیره نمایید سپس نقاشی دلخواه شلوغی را نیز جداگانه نقاشی و در همان Folder  ذخیره و سپس حجم این دو فایل را با هم مقایسه کنید.چه نتیجه ای میگیرید؟
در صورتیکه این دو فایل را با پسوند bmp ذخیره نمائیم، حجم هر دو  به یک اندازه خواهد بود. چرا که نرم افزار Paint از تکنیک نقطه ای استفاده می کند و همین امر موجب تراکم زیاد و در نتیجه حجم زیاد میشود.

3)  تفاوت اصطلاح Flip  و Rotate  در نرم افزار Paint  چیست و کاربرد آنها در کجاست؟
flip به معنای قرینه سازی و rotate به معنای دوران یا چرخش می باشد.
flip  برای قرینه سازی عکس به صورت افقی یا عمودی می باشد و Rotate  عکس را به صورت 90 و180 و 270  درجه می چرخاند.

4)   منظور از Magnifier  در MS-Paint چیست؟ کاربرد آن و حالات مختلف آنرا بررسی کنید.
منظور بزرگنمایی و ذره بین است. برای زوم کردن بر روی تصویر استفاده می شود. حالات مختلف آن بزرگنمایی مثبت و بزرگ نمایی منفی است.

5)   تفاوت Rectangle  با  Fill Rectangle  و Rounded Rectangle چیست؟
Rectangle یک مستطیل تو خالی است. Fill Rectangle  یک مستطیل تو پر رنگی است. Rounded Rectangle یک مستطیل توپر سفید است .

6)   به سطر نمایش دهنده موقعیت جاری اشاره گر ماوس چه می گویند؟ این اعداد از چند شروع و به چند ختم می شوند؟
کرسر ماوس را در هر کجای صفحه ی نقاشی که قرار دهیم ، مختصات طول و عرض آن نقطه در نوار وضعیت پایین برنامه نشان داده خواهد شد.

7)   حجم فایلهای خلوت(تُنک) و شلوغ از نظر تنوع رنگی و تنوع شکلی با فرمت های مختلف ذخیره فایلهای تصویری نظیر TIFF , JPG , BMP را با هم مقایسه کنید.
فایلهای تصویری با پسوند jpg نسبت به بقیه حجم کمتری دارند و در حالت خلوت نیز مقدار کمتری را میگیرند.
پسوند
tiff نسبت به jpg حجم بیشتری دارند ولی فایل خلوت آن نیز به نسبت حجم کمتری نسبت به فایل شلوغ آن دارد.
پسوند
bmp نسبت به پسوندهای بالا حجم بیشتری را اشغال می کنند و حجم فایل خلوت و شلوغ آن نیز مساوی است.

8)   آیا می توان یک فایل PSD را از محیط Photoshop و یا فایل DWG را از محیط AutoCAD و یا فایل SWF را از محیط Flash  به Paint فراخوانی کنیم؟جواب خود را به شکل عملی تجربه نموده و دلائل خود را تحلیل کنید.
Paint اجازه ی چنین کاری را نمی دهد و اگر خواستیم چنین فایلی را مثلا از فتوشاپ به داخل Paint فراخوانی کنیم با پیام خطایی مواجه می شویم که می گوید این فایل یک فایل Bitmap نمی باشد.

سوالات تحقیقی پژوهشی فصل اول – صفحه 21 و 22

1)                    کدامیک از موارد زیر از خانواده Raster  و کدامیک از خانواده Vector محسوی میشوند؟

 Raster :Scanner , Monitor  MS-Paint , Media Player ,

Vector : Photo-Shop , Word , Auto-CAD ,  Plotter , Digitizer

2)                  منظور از True Color و High Color در انتخاب بخش Setting در پنجره Display Properties چیست؟
تعداد بیت های استفاده شده برای تشریح یک پیکسل  را " عمق بیت یا True color " گویند.
هنگامی که عمق رنگ 16 باشد ، تعداد رنگهای قابل نمایش
65,536 می باشد که به آن (High Color, XGA) گویند.
اگر عمق رنگ 24 باشد
16,777,216 رنگ قابل نمایش است. (True Color, SVGA)

3)                 تفاوت کارت گرافیک PCI و AGP و ISA چیست؟
isa یا industry standard architecture یک گذرگاه استاندارد برای اتصال مادربورد و کارتهای مختلف است که از سوی شرکت ibm at طراحی شده است این استاندارد انتقال 16 بیت به طور همزمان را بین مادربورد و کارت دارد. این تکنولوژی بر روی مادربوردهای امروزی وجود ندارد و پشتیبانی نمی شود.
در مقابل فناوری مورد استفاده pci یا peripheral componet intercomect است. pci با 134 پایه (pin) 32 بیت و با 1888 پایه 64 بیت را در یک لحظه انتقال می دهد.
اندازه pci با طول معمولی 312 میلیمتر و با طول کوتاه بین 119 تا 167 میلیمتر است agp یا accelerated graphics port واسطی است برای نمایش سریع گرافیکی سه بعدی در رایانه های شخصی سرعت agp برای گرافیک از pci بیشتر است و به همین دلیل کارتهای گرافیک agp در مقایسه با کارتهای گرافیک pci سرعت بهتری دارند. البته agp فقط مخصوص کارت گرافیک است.

4)                  اصطلاحات زیر را در ارتباط با کا رت گرافیک توضیح دهید.

Graphic co-processor : کارت هائی از این نوع قادر به انجام هر نوع عملیات گرافیکی بدون کمک گرفتن از پردازنده اصلی کامپیوتر می باشند.

Graphic Accelerator : تراشه موجود بر روی این نوع کارت ها ، عملیات گرافیکی را بر اساس دستورات صادره شده توسط پردازنده اصلی کامپیوتر انجام خواهند داد.

(Digital-to-Analog Converter ) DAC : تبدیل کننده فوق را RAMDAC نیز می گویند. داده های تبدیل شده به دیجیتال مستقیما" از حافظه اخذ خواهند شد. سرعت تبدیل کننده فوق تاثیر مستقیمی را در ارتباط با مشاهده یک تصویر بر روی صفحه نمایشگر خواهد داشت .

Graphic BIOS : کارت های گرافیک دارای یک تراشه کوچک BIOS می باشند. اطلاعات موجود در تراشه فوق به سایر عناصر کارت نحوه انجام عملیات (مرتبط به یکدیگر) را تبین خواهد کرد. BIOS همچنین مسئولیت تست کارت گرافیک ( حافظه مربوطه و عملیات ورودی و خروجی ) را برعهده خواهد داشت .

Connector : کارت های گرافیک از کانکتورهای استاندارد استفاده می نمایند.اغلب کارت ها از یک کانکتور پانزده پین استفاده می کنند. کانکتورهای فوق همزمان با عرضه VGA :Video Graphic Array مطرح گردیدند.

5)                  آیا انسانها میتوانند تنوع بیش از ده میلیون رنگ را تشخیص دهند؟

منظور از آستانه تنوع رنگ قابل تشخیص در انسانها چیست؟

چرا به تعداد 10 میلیون رنگ True color گفته می شود؟
در اغلب صفحات نمایشگر ، پیکسل ها بصورت " تمام رنگ " (True Color) بوده و دارای 16/8 میلیون حالت متفاوت می باشند. با توجه به اینکه چشم انسان قادر به تشخیص ده میلیون رنگ متفاوت می باشد ، 16/8 میلیون رنگ بمراتب بیش از آن چیزی است که چشم انسان قادر به تشخیص آنها بوده و بنظر همان ده میلیون رنگ کفایت می کند!

6)                  منظور از Horizontal Refresh rate  و  Vertical Refresh rate  در مانیتورها چیست؟

توضیح خود را با اصطلاح  شدن یا جاروب شدن مانیتور توضیح دهید.
Vertical صفحات را جاروب میکند و Horizontal با پرتاب الکترونها به پیکسلها رنگها را نمایش میدهد
Horizontal   یعنی تعداد خط های افقی که صفحه نمایش می تواند در یک ثانیه تغییر بدهد.

7)         تفاوت و تشابه سخت افزاری و نحوه عملکرد مانیتورهای CRT و LCD را بطور کامل بررسی و مقایسه نمایید.

CRT(Cathod Ray Tube) به معنای لامپ اشعه کاتدی می باشد.
اشعه کاتدی، اشعه ای است که در ژن ما تاثیر دارد و باعث ایجاد جهش ژنی میشود.
خصوصیات
CRT : حجیم ، سنگین ، مصرف برق بالا ، مضر برای چشم انسان ، قیمت پایین ، کیفیت بالا ، و شفاف تر.
یک لامپ بزرگ و خازن های بسیار زیادی در آن وجود دارد.
CRT ها Refresh بسیار بالایی دارند ولی در LCD ها اینگونه نیست.
 
CRT  که در تلویزیونهای خانگی از آن استفاده میشود حاوی یک تفنگ الکترونی است که درون یک محفظه ی استوانه ایی شیشه مانند قرار گرفته است.دسته های الکترونی به کمک اسلحه ی یاد شده به سمت شیشه ی انتهایی استوانه شلیک میشوند.
یک سری دستگاههای ایجاد امواج الکترومغناطیس (که میتوانند شامل الکترودها و یا سیم پیچها باشند) که بر اساس یک سیگنال تغذیه ورودی تغییر میکنند، باعث تغییر مسیر سری الکترونها در راه رسیدن به انتهای شیشه میشوند.در انتهای مسیر، شیشه ی تلویزیون توسط لایه ی خاصی از فسفرسانت قرمز، آبی و سبز (RGB) پوشانده شده است که با برخورد الکترونها به آن، شروع به درخشیدن و ایجاد تصاویر بر روی صفحه ی تلویزیون میکنند.

LCD(Liquid Crystal Display) به معنای نمایشگر کریستال مایع است.

خصوصیات LCD : سبک ، کم حجم ، کم مصرف در برق ، قیمت بالا ، ضرر کمتر  نسبت به CRTها ، کیفیت پایین تر نسبت به مدل های CRT .
LCD با کریستال مایع که بسیار شفاف است کار می کند. اگر یک آهن ربا در نزدیکی آن قرار دهیم باعث میشود یک رنگین کمان دور آن بوجود بیاید.

 

 

8)                  کدامیک از پسوند فایلها مربوط به تکنیک Raster  و کدامیک Vector است؟چرا؟

Raster: BMP , JPG

Vector: PSD, DWG , DOC ,

9)                   ارتباط مبحث Object Oriented  با مبحث Vector  چیست؟ آنرا بررسی کنید.
Vector از خطوط و منحنیهایی تشکیل شده است که توسط فرمولهای ریاضی تشکیل می شوند. همچنین آنها را به عنوان تصاویر object-oriented می شناسند. آنها مستقل از resolution هستند، بدین معنی است که شما می توانید به هر اندازه ای که بخواهید آنها را scale کنید بدون اینکه جزییات آنها از بین برود. بنابراین این نوع تصاویر بسیار مناسب موضوعاتی است که به جزییات زیادی نیاز دارند مثل لوگو.

10)                ده نمونه از Resolution های مانیتورها را بررسی کنید.
Resolution بالا ، باعث  ارائه تصاویر گرافیکی هموار( صاف و بی موج ) و نمایش اطلاعات بیشتر بر روی نمایشگر می گردد

11)                 چرا فایلهای PSD از PhotoShop و یا فایلهای DWG از نرم افزارهایی مثل AutoCAD، در ویندوز یا اینترنت قابل استفاده نیستند؟!
چنین فایلهایی فقط در صورتی اجرا می شوند که سورس اصلی آنها در مسیر مشخص ویندوز نصب شده باشد و با توجه به اینکه در اینترنت امکان نصب هیچ نرم افزاری توسط کاربر وجود ندارد، لذا در آن محیط مجازی نیز نمی توان چنین فایلهایی را مشاهده کرد.
البته هم اینک گروهی برنامه ای آنلاین با استفاده از
Flashساخته اند که دقیقا شبیه Photoshopاست . این گروه توانسته اند یک کپی از فتوشاپ را بسازند تا ما بتوانیم  به راحتی هر فایل عکسی را که خواستیم با آن باز کرده و ویرایش کنیم. این برنامه تقریبا تمام ابزارهای فتوشاپ را دارا می باشد. از لایه ها گرفته، تا فیلترهای عکس. حتی میتونید فایلهای PSD(فرمت فتوشاپ) را نیز با آن باز کرد. این برنامه در این آدرس قرار گرفته است : http://www.pixlr.com/editor

12)                نام ده نرم افزار پر کاربرد امروزی را بر اساس Vector یا Raster بودن ، تقسیم بندی کنید و علت تقسیم بندی را نیز توضیح دهید.
Vextractor v3.97 : نرم افزاری برای طراحی متن و گرافیک بر اساس تکنیک وکتور
OakDoc DWG To Image v1.1 : تبدیل فرمت عکس ها به یکدیگر، نمایش آنها و افکت گذاری با پشتیبانی از وکتور
CAD to PDF Professional v4.7.8 : برنامه ای برای طراحی اشکال به صورت وکتور. خروجی برنامه با فرمت استاندارد وکتور SVG
AlgoLab Photo Vector 1.98.77 : تبدیل فرمت فایلهای DXF,DWF و DWGبه فرمتهای BMP, WMF,GIF, JPEG PCX, TIFF,TGA, CGM, EPS, PDF, HPGL
AlgoLab Raster to Vector Conversion 2.97.57
: برنامه ای برای تبدیل طراحی ها، نقشها و متون raster به تکنیک وکتور
AutoDWG FlashDWG v2.0
: تبدیل تصاویر، نقاشی ها و نقشه های معماری، مهندسی و... از فرمتraster به فرمت vector
CAD to PDF Professional v4.7.8 : برنامه ای برای طراحی اشکال به صورت وکتور. خروجی برنامه با فرمت استاندارد وکتور SVG
deskDOC DWG to PDF Professional v4.6.9
: تبدیل فایلهای DWG ،DXF،DWF به فایلهایPDF ، GIF،JPG،PNG،TIFF، BMP
DWGTool DWG to IMAGE Converter MX v4.65
: تبدیل فرمت فایلهای DWG/DXF/DWF به فایلهای PDF ، GIF، JPG، PNG، TIFF، BMP
DWGTool DWG to WMF Converter MX v4.65
: تبدیل فرمت فایلهای DXF,DWF و DWGبه فرمتهای BMP,JPEG,GIF,TIFF,PNG با امکان تبدیل گروهی

13)               منظور از اصطلاح DVI( به معنای واسط دیجیتالی ویدئویی) در کارت گرافیکهای جدید چیست؟
از کارت های گرافیک که دارای اینترفیس ویژوال دیجیتال می باشند ، بمنظور اتصال به مانیتورهای دیجیتال استفاده می گردد. با استفاده از اینترفیس DVI و پورت خروجی DVI، امکان اتصال کارت های گرافیک به انواع مانیتورهای دیجیتال و آنالوگ ، فراهم می گردد .

14)               تفاوت دو اصطلاح Tuner و Toner  در چیست؟

Tuner  یک گیرنده ی امواج رادیویی و تلویزیونی از فضا و تبدیل کننده به نور و تصویر در تلویزیون و رادیوها می باشد.
( همه ی رادیوها و تلویزیون ها و بیسیم ها دارند ولی مانیتور ها ندارند.)
Toner یک پودر بار الکتریکی داده شده با دو عنصر ترکیبی رنگدانه و پلاستیک می باشد که در مخزن جوهر پرینتر به کار می رود.

15)      در یک مانیتور VGA (256 رنگی) و با Resolution=640*480 ، حداقل ظرفیت حافظه کارت گرافیکی (V-RAM) ، چند کیلوبایت یا چند مگابایت است؟                                                                         256 * (640 * 480)= 78643200

16)               در یک مانیتور SVGA با عمق رنگ 32 بیت (چهاربایت) و Resolution=1024 * 768 ، حداقل به چه ظرفیت حافظه برای V-RAM نیاز داریم؟                                                                                         (1024 * 768) * 32 = 25165824

17)               اصطلاح DPI که مخفف Dot Per Inch می باشد ، چه کاربردی در مبحث مانیتوتر ، اسکنر و یا پرینتر دارد؟
Dpi واحد اندازه گیری resolution(وضوح) است که کیفیت عکس اسکن شده را تعیین می کند.

18)               تفاوت دو تکنیک مدیریت رنگ (CMYK , RGB) در چیست؟ آیا روش دیگری نیز وجود دارد؟
RGB که مخفف کلمات Red, Green, Blue می باشد از دسته ی رنگهای سایه روشن می باشد. همچنین این سبک یکی از پرکاربردترین سبک رنگ در میان دیگر سبک ها می باشد و با ترکیب این سه رنگ، رنگ اصلی به وجود خواهد آمد. رنگ های RGB به طور خودکار در چاپگرها مختلف و خروجی های رایانه ای(تصاویر وب، تصاویر هنری و غیره) با ظرافت تمام جا به جا می شوند. استفاده از این سیک برای گرافیست هایی که حرفه ای عمل می کنند و یا شما که از فتوشاپ با فرمت JPEG خروجی می گیرید بهترین گزینه ممکن می باشد.
CMYK
که مخفف کلمات فیروزه ای(Cyanred)، سرخابی(Maqenta)، زرد(Yellow) و سیاه(Black) می باشد از دسته رنگهایی هست که میزان آن بر حسب درصد تعیین می شود. همچنین این سبک رنگ برای جوهرها و نقاشی ها مورد استفاده قرار می گیرد و بیشترین کاربرد را در خروجی چاپگر(Printer)دارد.


 

19)                تعداد کاراکتر قابل نمایش در Text Mode   و Graphic Mode    را با هم مقایسه کنید.علت چیست؟
در حالت متن کوچکترین جزء نمایش قابل دسترس یک کاراکتر می‏باشد . در حالت متن ،پیکسل ها قابل دسترسی یا آدرس دهی نمی‏باشند . در اکثر موارد بخصوص درکاربردهای DOS  وضعیت تصویر در حالت متن می‏باشد در حالت متن عموما صفحه نمایش به 80 ستون و25 سطر تقسیم شده که به آن حالت 25×80 گفته می‏شود و یک کاراکتر در هر یک ازسطر و ستون ‏های مربوطه می‏تواند بر روی صفحه نمایش ایجاد شود .
حالت گرافیک حالتی است که در آن اگر چهکارکترهای قابل نمایش هستند . اما پیکسل ها هم قابل دسترس می‏باشند به عبارت دیگرمی‏توان یک پیکسل معینی را در محلی از صفحه نمایش ایجاد نمود به همین دلیل به حالتگرافیک حالت
APA (All Point Addressable)  هم گفته می‏شود یعنی اینکه کلیه نقاط صفحه نمایش قابل دسترس می‏باشند .
در حالت گرافیک صفحه نمایش به تعدادی پیکسل در جهتسطر و ستون تقسیم می‏شود و حالت تصویر بر حسب تعداد پیکسل مزبور بیان می‏شود . مثلا 200×640 به حالتی از تصوبر گفته می‏شود که صفحه نمایش 640 پیکسل در جهت افقی و 200پیکسل در جهت عمودی داشته باشد .

20)               مفاهیمی همچون Bold  یا Italic  و یا حتی اندازه فونت(Point)  ، موضوع قابل بحث در محیط متنی می باشد یا خیر؟چرا؟
خیر ، چون در Text-Mode  فقط کاراکتر وجود دارد و حتی قابل آدرس دهی و نمایش هم نیست.

21)                تفاوت حافظه RAM  سیستم که به صورت ماژولهایی روی Mainboard  نصب می شوند با حافظه RAM قابل نصب روی کارت گرافیک چیست؟ در جواب خود علت پائین بودن سرعت کارت گرافیک Onboard  را شرح دهید.
برای انجام کارهای سنگین گرافیکی بهتر است از Ram جدا از مادر بورد استفاده کنیم چرا که Ram روی مادر برد برای اینکه بتواند کار خود را انجام دهد انرژی زیادی مصرف می کند و همین امر موجب گرم شدن زیاد از حد مادر برد شده و حتی ممکن است به بقیه ی قطعات نیز صدمه بزند.

آیا محیط Editor نرم افزار Turbo C یا Borland C که محل تایپ Source Code های برنامه نویس می باشد، یک محیط متنی است یا محیط گرافیکی؟ چرا؟ یک محیط متنی است. چرا که در آن هیچ شکل گرافیکی نمی توان مشاهده کرد

خبری اینجاست ....

با سلام

قصد دارم تعدادی از سوالات کتاب گرافیک کامپیوتری در زبان C تالیف آقای مهندس محمد رضا فرقانی را در اینجا برایتان به نمایش بگذارم.

اگر استفاده کردید و انشالله این درس را با نمره عالی پاس نمودید ،

مرا از دعای خیر خود محروم نسازید!

با سپاس