عرض سلام خدمت شما دوستان
از وقفه ی طولانی که بین آموزش ها افتاد عذر خواهی میکنم.
با بخش نهم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این بخش نحوه دستکاری کانال های رنگ RGB تصویر را خواهیم گفت و همچنین تابع ()setlinestyle را شرح خواهیم داد.
قبل از انجام هر کاری باید فایل پروژه را در کامپایلر مورد نظر باز کنیم (برای اطلاعات بیشتر به قسمت های قبل رجوع شود).
شرح تابع ()setlinestyle :
[HR]
Please Login or Register to see this code
توضیحات دستور مشخص شده با عدد یک (تابع ()setlinestyle) در کدهای بالا :
از تابع ()setlinestyle جهت تعیین سبک خط استفاده میشود.
شرح پارامتر های ورودی تابع ()setlinestyle :
[COLOR=#0c0c0c]الگوی تابع : ( void setlinestyle [COLOR=#0070C0] ([COLOR=#0070C0]int linestyle ,unsigned upattern ,int thickness
[COLOR=#0070C0][COLOR=#002060][COLOR=#0070C0]linestyle [COLOR=#0070c0]: این پارامتر نوع الگوی خط را مشخص میکند و میتواند مقادیر ثابت زیر را بپذیرد. از نوع صحیح (int)
SOLID_LINE : این ثابت باعث میشود خط به صورت کامل نمایش داده شود (معادل عددی 0)
DOTTED_LINE : این ثابت باعث میشود خط بصورت نقطه چین (کاملا نقطه نیست) نمایش داده شود (معادل عددی 1)
CENTER_LINE : این ثابت باعث میشود خط بصورت هم زمان خط چین و نقطه چین نمایش داده شود (معادل عددی 2)
DASHED_LINE : این ثابت باعث میشود خط بصورت خط چین نمایش داده شود (معادل عددی 3)
USERBIT_LINE : زمانی که از این ثابت استفاده کنید میتوانید با مقداردهی پارامتر بعدی همین تابع یک الگوی ساده بجز چهار الگوی قبلی برای خط تعریف کنید (معادل عددی 4)
[COLOR=#0070C0][COLOR=#002060][COLOR=#0070C0]upattern [COLOR=#0070C0][COLOR=#002060] [COLOR=#0070c0]: این پارامتر زمانی قابل استفاده است که شما پارامتر اولی همین تابع را برابر با مقدار USERBIT_LINE قرار دهید و آنگاه این پارامتر را با مقادیر مختلف عددی مقدار دهی کنید تا یک الگو تازه تولید شود ( )
[COLOR=#0070C0][COLOR=#002060][COLOR=#0070C0]thickness [COLOR=#0070C0][COLOR=#002060] [COLOR=#0070c0]: این پارامتر ضخامت خط را مشخص میکند و دو ثابت زیر را میپذیرد. از نوع صحیح (int)
NORM_WIDTH : این ثابت ضخامت خط را 1 پیکسل قرار میدهد (معادل عددی 1)
THICK_WIDTH : این ثابت ضخامت خط را 3 پیکسل قرار میدهد (معادل عددی 3)
و همان طور که در دستورات میبینید بعد از مقداردهی تابع ()setlinestyle، تابع ()line را جهت رسم خط مورد نظر فراخوانی کرده ایم.
نتیجه اجرای دستورات بالا :

[HR]
خب بریم سراغ کار با کانال های رنگ RGB
به دستورات زیر خوب دقت کنید :
[HR]
Please Login or Register to see this code
توضیحاتی کوتاه درباره کانال های رنگ RGB :
کانال ها تصاویر خاکستری هستند که انواع مختلفی از اطلاعات را ذخیره می کنند . کانال های اطلاعات رنگ در هنگام بازکردن یک تصویر جدید بصورت اتوماتیک ایجاد می شوند. مُد رنگ تصویر تعیین کننده تعداد کانال های ایجاد شده می باشد. برای مثال یک تصویر در مُد RGB بصورت پیش فرض دارای چهار کانال است، به صورت کانال های قرمز، سبز و آبی و بعلاوه یک کانال ترکیبی که برای ویرایش تصویر بکار می رود.
دستور 1 تابع ()Channel را فراخوانی میکند. (توجه بقیه دستورات در مراحل قبلی گفته شده است)
شرح پارامتر های ورودی تابع ()Channel :
[COLOR=#0c0c0c]الگوی تابع : ( void Channel [COLOR=#0070C0] ([COLOR=#0070C0]int State = 1 ,int A = 1 ,int B = 1 ,int C = 1
State : این پارامتر دو مقدار 1 و 2 را می پذیرد، در حالت شماره 1 شما میتوانید با مقداردهی سه پارامتر بعدی همین تابع کانال های رنگ تصویر را جابجا یا یکنواخت کنید. در حالت شماره 2 شما میتوانید مقداردهی سه پارامتر بعدی همین تابع کانال های رنگ RGB را خاموش یا روشن کنید. از نوع صحیح (int).
A : اگر پارامتر ورودی State را برابر با مقدار 1 قرار دهید این پارمتر میتواند مقادیری بین 0 تا 2 را بپذیرد ولی اگر پارامتر ورودی State را برابر با مقدار 2 قرار دهید این پارامتر میتواند مقادیر 0 یا 1 را بپذیرد که عدد 0 بیانگر خاموش بودن کانال رنگ است و عدد 1 بیانگر روشن بودن کانال رنگ است. از نوع صحیح (int).
B : اگر پارامتر ورودی State را برابر با مقدار 1 قرار دهید این پارمتر میتواند مقادیری بین 0 تا 2 را بپذیرد ولی اگر پارامتر ورودی State را برابر با مقدار 2 قرار دهید این پارامتر میتواند مقادیر 0 یا 1 را بپذیرد که عدد 0 بیانگر خاموش بودن کانال رنگ است و عدد 1 بیانگر روشن بودن کانال رنگ است. از نوع صحیح (int).
C : اگر پارامتر ورودی State را برابر با مقدار 1 قرار دهید این پارمتر میتواند مقادیری بین 0 تا 2 را بپذیرد ولی اگر پارامتر ورودی State را برابر با مقدار 2 قرار دهید این پارامتر میتواند مقادیر 0 یا 1 را بپذیرد که عدد 0 بیانگر خاموش بودن کانال رنگ است و عدد 1 بیانگر روشن بودن کانال رنگ است. از نوع صحیح (int).
سعی کنید دستورات نوشته شده در تابع ()Channel را بررسی کنید. توجه : تمامی پارامتر های ورودی این تابع دارای مقدار پیش فرض (Default value) یک است.
نتیجه اجرای دستورات بالا : (توجه : شما میتوانید تصویر جدید و ویرایش شده را توسط تابع ()writeimagefile که قبلا شرح داده شد ذخیره کنید در ضمن تصویر استفاده شده در این آموزش را میتوانید از [External Link Removed for Guests] دریافت کنید، فایل پروژه ی این آموزش را نیز میتوانید از [External Link Removed for Guests] دریافت کنید با پسوند ZIP).

نتیجه اجرای تابع در حالت ( 0, 1, 2, 1)Channel :

نتیجه اجرای تابع در حالت ( 1, 2, 0, 1)Channel :

نتیجه اجرای تابع در حالت ( 1, 0, 0, 2)Channel : (تنها کانال آبی تصویر فعال است)

نتیجه اجرای تابع در حالت ( 0, 1, 1, 2)Channel : (کانال آبی تصویر غیر فعال است)

و به همین ترتیب میتوانید حالت های مختلفی ایجاد کنید.
[HR]
خب این بخش نیز به پایان رسید. امیدوارم از این آموزش لذت برده باشید. من عاشق کار روی تصاویرم و مطمئنم شما هم از این کار بدتان نمی یاید (برای پردازش تخصصی و حرفه ای تصاویر دیجیتال، یادگیری نرم افزار Matrix laboratory) MATLAB) توصیه میشود).
و پیروز باشید
توجه : هر گونه کپی برداری از این تاپیک و مطالب آموزشی آن تنها با درج نام سایت [COLOR=#ffc000]www.centralclubs.com به عنوان منبع مجاز است. با تشکر فراوان از .