کار با محیط گرافیکی و طراحی فونت در ویندوز

محیط گرافیکی در دومد مد متن( Text) و مدگرافیکی ( Graphic )  کار میکند . هرکدام ساختار خاص خود را دارد و نمیتوان از خصوصیات یکی برای دیگر استفاده کرد .

 


 1-  مد متن Text

        بیشتر برنامه های تحت DOS  از این مد استفاده میکنند . همانطور که در شکل زیر می بینید هر کاراکتر در موقعیت صفحه نمایش دارای دو بایت اطلاعات در حافظه کارت گرافیکی ( VideoRam )  است.  بایت اول آن برای کد کاراکتر و بایت دوم برای رنگ متن و رنگ زمینه میباشد . صفحه نمایش یک ماتریس دو بعدی ( 79  x  25 ) میباشد . برای پیدا کردن محل ( j ,i ) در حافظه VideoRam از رابطه زیر استفاده میشود .

 X =j*80+i*2   آدرس شروع در حافظه گرافیکی             

                        j   شماره سطر                 i   شماره ستون

سیستم نمایش کاراکترها در مد متن

 

 ***   در این درس  مبحث مد متن را تا همین حد کافی میدانیم بیشتر به مد گرافیکی خواهیم پرداخت

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

پایه  Sync  آخر هر صفحه را تعیین می کند یعنی یک پالس می دهد که صفحه تمام شد         

     مولد پیکسل به ازای هر کاراکتر ِیک ماتریس 8*16 را دارد که اگر کد کاراکتر بیاید شکل آن را استخراج می کند. به ازای هر کاراکتر یک بایت فضا اشغال می شود یعنی  ماتریس 16*1 اشغال می شود. 0...9 کاراکترهای علامت هستنداز 30 ....39 کاراکترهای 0...9 می باشندو بعد از آن حروف انگلیسی قرار می گیرند.از 80.......ff  کدهای زبان فارسی می باشند.  سیستم Ascii دو زبان انگلیسی و فارسی دارد ولی سیستم یونی کد همه زبانها را دارا  می باشد.  آنهایی که روشن است یک و آنهایی که خاموش است صفر است تا یک حرف را نمایش داده شود.

 نکته:در سیستم Dos  اگر مانیتور را فارسی کردیم  این دلیل نمی شود که چاپگر نیز فارسی شود به خاطر سختی کار بود که به  سیستم Windows رو آوردیمچون این کار را خودش انجام می دهد.

  

2- مد گرافیکی  (Graphic  )

برای هر رنگ یک بیت احتیاج است وقتی تک رنگ باشد یک بیت است یعنی یا خاموش است یا روشن . برای مثال یک پیکسل 8 بیت اختصاص داده چند رنگ خواهیم داشت؟ 256=2برای صفحه نمایش ما 800*600 خانه حافظه احتیاج داریم.  کل حافظه گرافیکی :4*k480  فضای حافظه کارت گرافیکی وابسته به وضوح یاReselation  دارد. اگر یک پیکسل 8 حالت داشته باشد ما سه بیت داریم 8=2برای هر رنگ یک بیت اختصاص می دهیم اگر 8 رنگ داشته باشیم یعنی 8 پیکسل داریم و یک پیکسل 8 حالت دارد وقتی تک رنگ باشد یک بیت است یعنی یا روشن است یا خاموش تعداد پیکسل ها بستگی به وضوح و رنگ دارد.

 

تعداد بیتها =n

تعداد رنگها = 2n                         

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

 

 ارتباط اجزای  واسط گرافیکی در ویندوز

 

 DC(device context) : یک شیء در داخل سیستم ویندوز می باشد عملیات ترسیمی و ارتباط با سخت افزار را انجام می دهد. مجموعه کارها و توابع کلی تری را در این شکل می بینیم مثل ترسیم خط پر کردن داخل یک تصویرو یا تغییر غالب و ... برنامه های کاربردی نمی توانند به صورت مستقیم با DC ارتباط  برقرار کنند باید به صورت غیر مستقیم توابع موجود در این شیء را فراخوانی کند.

 

معرفی بعضی توابع موجود در DC :

CanvasPen.color()

CanvasMoveto(x,y)

CanvasLine(x,y)

CanvasCircle(x,y,r)

CanvasFont.name(‘ نام فونت ‘)

CanvasOuttext(‘ رشته ای که چاپ می شود ‘)

GDI  (graphic device interface): این بخش از سیستم ویندوز واسط گرافیکی می باشد. که برنامه های کاربردی توابعی که در فایل  GDI32.dll هستند را صدا می زند و توابع موجود در این فایل شما را از دانستن جزئیات روش ارتقاء با سخت افزارهای گرافیکی بی نیاز می کند یک برنامه جهت انجام عملیات ترسیمی روی یک وسیله گرافیکی به دو مولفه احتیاج دارد.یکی فایل GDI32.dll و دیگری راه انداز سخت افزار که بسته به نوع وسیله گرافیکی متفاوت می باشند. مثلا" برنامه ای که با پرینتر کار می کند dll متناظر با آن printer به عنوان درایو کار می کند.