گرافیک

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

گرافیک

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

تمرین کارگاهی فصل دوم صفحه 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 تجربه کنید.