دوشنبه ۲۷ دی ۱۳۹۵
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 مروری بر +GDI
.NET Graphics
تاریخ ثبت:  ۸۷/۸/۱۳
تعداد نمایش:  ۴۱۹۷
  نویسنده: سعید هوشمند
 
   ۱۱  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

GDI+ (Graphics Device Interface Plus)

رابط تجهیزات گرافیکی (GDI) توابع و ساختار های (structures) را فراهم آورده است که برنامه ها می توانند با استفاده از آن خروجی هایی گرافیکی را برای نمایش ،چاپ یا وسایل دیگر تولید نمایند .با استفاده از توابع GDI شما می توانید خطوط ،منحنی ها ،اشکال بسته ،مسیرها ،متن و عکس های نقشه بیتی (Bitmap) را ترسیم نماید .رنگ و سبک مواردی که شما ترسیم می کنید  به شی ترسیم (Drawing Object) که هست  قلم ،برس و فونت که خود  شما ایجاد نموده اید وابسته است.شما می توانید از قلم هایی برای ترسیم خطوط و منحنی ها ،برس های برای پر کردن درون اشکال بسته و فونت هایی برای نوشتن متن استفاده کنید.

برنامه ها به صورت مستقیم خروجی شان را برای یک دستگاه بخصوص که قبلاً برای آن یک محتوای دستگاه(Contex Device --DC) ایجاد نموده اند می فرستند.DC یک ساختار مدیریت شده در GDI  می باشد که اطلاعاتی در مورد دستگاه از قبیل سبک عملکرد و اختیارات کنونی را شامل می شود .هر برنامه کاربردی یک DC  را با استفاده از توابع محتوای دستگاه ایجاد می کند . GDI  یک دستگیره (Handle) محتوای دستگاه که بعداً با استفاده از آن می تواند دستگاه را معین سازد بر می گرداند.به عنوان مثال با استفاده از handle ،یک برنامه می توانند اطلاعاتی را در مورد توانایی های دستگاه  از قبیل نوع تکنولوژی دستگاه و ابعاد تفکیک پذیری (resolution) دستگاه را بدست آورد .

برنامه کاربردی می توانند مستقیما خروجی را روی دستگاه فیزیکی از قبیل پرینتر یا صفحه نمایش یا حتی روی  یک دستگاه منطقی مثل حافظه یا متافایل بفرستد.در واقع دستگاه منطقی به برنامه ها این توانایی را می دهد که خروجی را روی آنها ذخیره کنند تا بعدا به سادگی بتوانند خروجی را به یک دستگاه فیزیکی منتقل کنند.برنامه ها از توابع ویژه ای جهت تنظیم مدل عملکرد و دستگاه انتخابی استفاده می کنند .حالت عملکرد شامل متن و تصویر پس زمینه می باشد ،در مدل ادغامی مشخص می شود که چگونه رنگ های یک قلم یا برس با رنگ های موجود روی صفحه ترکیب شود و مد مسیردهی  (maping) که مشخص می کند GDI  چگونه دستگاه مختصات استفاده شده به وسیله برنامه را با دستگاه مختصات دستگاه (DC)  هماهنگ سازد.

+GDI

+Microsoft Windows GDI بخشی ازسیستم عامل ویندوز xp یا 2003 سرور است که گرافیک 2 بعدی ،تصویر سازی ،و فن چاپ  را تامین می کند .+GDI با اضافه کردن ابزار های جدید یا بهینه کردن ابزار های موجود GDI باعث بهبود آن شده است و ابزار جدید +GDI نام گرفته است. 

مقدمه ای بر +GDI:

+GDI یک رابط دستگاهای گرافیکی است که به برنامه نویس اجازه می دهد تا برنامه هایی مستقل از دستگاه بنویسد سرویس های +GDI در مجموعه ای از کلاس های ++C قرار گرفته است.

سه بخش +GDI:

سرویس های +GDI  را در 3 بخش گسترده زیر دنبال می کنیم:

·        2D vector graphics      گرافیک برداری دو بعدی

·        Imaging                   تصویر سازی

·        Typography               فن چاپ

 

2D vector graphics

گرافیک برداری شامل اصول اولیه ترسیم است که توسط مجموعه ای از نقاط روی یک سیتم مختصات مشخص می شود.به عنوان مثال یک خط مستقیم می تواند با استفاده از 2 نقطه پایاینی (endpoint) مشخص شود یا یک مستطیل می تواند مشخص شود با یک نقطه که موقعیت گوشه سمت چپ بالا ی مستطیل باشد و یک جفت عدد که نشان دهنده عرض و ارتفاع مستطیل  باشد .یک مسیر در واقع آرایه ی از نقاط می باشد که با خطوطی مستقیم به هم متصل می شوند ویک منحنی بیزر در واقع یک منحنی خبره است که با 4 نقطه کنترلی مشخص می شود.

 

+GDI کلاس هایی را برای نگهداری اطلاعاتی در مورد اشکال اصلی وکلاس هایی برای نحوه ترسیم آنها  را دارا می باشد .به عنوان مثال کلاس Rect موقعیت و اندازه مستطیلی را نگهداری می کند . Pen اطلاعاتی را در مورد رنگ و سبک یک قلم نگهداری می کند و کلاس Graphic دارای متد هایی است جهت ترسیم خطوط ،مستطیل ،مسیر و اشکال .همچنین کلاس Brush اطلاعاتی را در مورد چگونگی پر کردن اشکال بسته با یک رنگ یا الگوی خاص را نگداری می کند.

Imaging

انواع تصاویر مشکل یا غیر ممکن در نمایش را با تکنیک هایی از گرافیک 2 بعدی مشخص می سازد .برای مثال تصاویر روی دکمه های نوار ابزار که مانند یک آیکون ظاهر می شوند با مشخص کردن مجموعه ای از خطوط و منحنی ها سخت خواهد بود .عکسبرداری دیجیتال با جزئیات بالا از جمعیت درون یک استادیوم بسکتبال با تکنیک برداری خیلی سخت خواهد بود .ساختاری برای ذخیره سازی اطلاعاتی در مورد یک تصویر نقشه بیتی  پیچیده است و به همین دلیل در +GDI تعدادی کلاس برای همین منظور ها توسعه داده شده است تا  برنامه نویس در گیر این پیچیده گی ها نشود .به عنوان یک مثال کلاس CachedBitmap که با می توان از آن برای ذخیره یک نقشه بیتی  و دسترسی سریع به آن در حافظه استفاده نمود.

Typography

فن چاپ به نمایش متن در فونت ها و اندازه ها وسبک های مختلف وابسته است. +GDI از کارهای پیچیده گرافیکی بهتر پشتیبانی می نماید. یکی از ابزارها در +GDI خاصیت Antialiasing  که باعث می شود خطوط در صفحات LCD به صورت پله ای دیده نشود و صافتر به نظر برسد.

چه چیزهای جدیدی در +GDI وجود دارد ؟

+GDI از 2 جهت با GDI متفاوت است 1.ابزار هایی جدیدی که توانایی هایی جدیدی در ترسیمات گرفیکی به ما می دهد 2.بهینه سازی ابزارهای قبلی از حیث برنامه نویسی برای سرعت بیشتر در ترسیم و انعطاف پذیری بیشتر.

ابزارهای جدید

·        Gradient Brushes:

+GDI  برسهای شیب رنگی خطی (linear gradient) و شیب رنگی مسیری(path gradient) را برای پر کردن اشیا ،مسیر ها و ناحیه ها فراهم آورده است .برس شیب می تواند در ترسم خطوط و منحنی ها و مسیر ها استفاده شود.وقتی شما شکلی را با برس گرادیانت خطی پر می کنید رنگ به تدریج از سمتی به سمت دیگر تغییر می کند .به عنوان مثال وقتی شما شکلی را با استفاده از یک برس گرادیانت خطی با رنگ شرو ع آبی و رنگ پایان سبز پر می کنید رنگ از آبی شروع و به تدریج به سبز کامل درطرف افقی دیگر شکل تغییر می کند در حالی که در وسط رنگ های بوجود آمده حاصل ترکیب دو رنگ می باشد.

این در حالی است که اگر شکلی را با گرادیانت مسیری پر کنیم تنظیمات بیشتری را برای نحوه تغییر رنگ باید تنظیم نماییم .یکی از این تنظیمات رنگ مرکزی و رنگ مرزی است که مشخص می کند رنگ از مرکز شکل به سمت لبه های شکل چگونه تغییر رنگی داشته باشد.

·        Cardinal Splines

+GDI ازCardinal Spines پشتیبانی می کند .یک Cardinal Splines توالی است از خطوط منحنی تکی که با متصل شدن به هم یک منحنی واحد را بوجود می آورد. Cardinal Spines با استفاده از آرایه ای از نقاط معین می شود یک Cardinal Splines منحنی نرمی به وجود خواهد آورد و نه یک سلسله خطوط دندانه ای شکل که حاصل پیوستن چند خط مستقیم  به هم  است.

·        Independent Path Objects

در GDI یک مسیر به یک DC تعلق دارد ومسیر هنگام کشیدن از بین می رود. در +GDI  ترسیمات با استفاده از شی Graphics انجام می شود و شما می توانید چندین شی از GraphicsPath  بسازید  که از شی Graphics مجزا هستند .یک شی GraphicsPath در هنگام ترسیم از بین نمی رود و شما می توانید در زمانی دیگر دوباره آن را رسم نمایید.

·        Transformations and the Matrix Object

+GDI  یک شی Matrix را ارائه می دهد که ابزاری قوی در تغییر شکل (Transformations) {چرخش, انتقال و مواردی از این قبیل} می باشد .یه عنوان مثال می توان بااستفاده از آن اقدام به چرخش یک مسیر گرافیکی نمود مانند شکل زیر.

·        Scalable Regions

+GDI از ناحیه ها پشتیبانی زیادی می کند. GDI ناحیه ها را در دستگاه مختصات ذخیره می کند وتنها تغییر شکلی که در مورد آن پشتیبانی می شود انتقال است در +GDI ناحیه در مختصات جهانی (world coordinates) ذخیره می شود و اجازه می دهد که ناحیه دستخوش هر نوع تغییرشکلی شود(به عنوان مثال کشیدگی ) که می تواند این تغییرات را در یک ماتریس تغییرات (transformation matrix) ذخیره نمود  .در شکل زیر یک ناحیه را می بینیم که به ترتیب 3 تغییر کشیدگی ،چرخش و انتقال روی آن انجام شده است.

·        Alpha Blending

با استفاده از Alpha Blending شما می توانید شفافیت را دررنگ پر کننده یک شکل بوجود آورید. یک رنگ شفاف رنگی است مخلوط با رنگ های پس زمینه هر چه درجه شفافیت بیشتر باشد رنگ پس زمینه بیشتر نمایان می شود .در شکل زیر 4 بیضی با رنگی مشابه(قرمز) ولی با سطوح مختلفی از شفافیت پر شده است.

·        Support for Multiple Image Formats

+GDI کلاس های Image ، Bitmap و Metafile را تهیه نموده است که به شما این امکان را می دهد تا عکس هایی با فرمت های مختلف را لود ،ذخیره و دست کاری نمایید. در زیر فرمت های پشتیبانی شده توسط +GDI آمده است:

  • BMP
  • Graphics Interchange Format (GIF)
  • JPEG
  • Exif
  • PNG
  • TIFF
  • ICON
  • WMF
  • EMF

 

ادامه دارد...

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
سعید هوشمند
تخصص بنده در برنامه نویسی برنامه کاربردی وبرنامه نیسی شبکه و طراحی و پیاده سازی نرم افرار های جامع می باشد
همه مقاله های نوشته شده توسط این کاربر (۵)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۱ از مجموع ۱ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
نظر ابوالفضل حسن الدين ۱۳۸۷/۸/۱۴
پاسخ به: نظر سعید هوشمند ۱۳۸۷/۸/۱۶
اولین قبلی بعدی

Copyright © 2006 - 2016 All Rights Reserved.
Please direct your questions or comments to