در اين بخش مي‌توانيد در مباحث مربوط به زبانهاي بر پايه C به بحث بپردازيد
Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان ++C

توسط MISSILE » پنج شنبه 5 مرداد 1391 22:05

آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان ++C بدون نیاز به استفاده از DOS Box

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

همان طور که میدانید زبان C (توضیحات بیشتر در  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد ) یکی از زبان های بسیار قدرتمند برنامه نویسی کامپیوتری است که در سال 1972 توسط پرفسور Dennis Ritchie (توضیحات بیشتر در  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد ) در آزمایشگاه بِل ساخته شد که در دسته زبان های برنامه نویسی سطح میانی قرار میگیرد و نسخه بعدی آن که این زبان برنامه نویسی را کامل کرد زبان ++C است که توسط Bjarne Stroustrup (توضیحات بیشتر در  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد )  دانمارکی در سال ۱۹۷۹ در آزمایشگاه‌های بِل ساخته شد. در زبان ++C ویژگی کلاس نویسی (OOP) و ویژگی های دیگری نیز به زبان C اضافه شد این زبان دارای کاربردهای فوق العاده ای در دنیای کامپیوتر است زیرا دسترسی تقریبا مستقیمی به سخت افزار و منابع سیستم دارد حتی شما میتوانید از دستورات زبان Assembly (توضیحات بیشتر در  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد ) در کنار دستورات این زبان قدرتمند استفاده کنید فقط اِنقدری اشاره کنم که نرم افزارهای قدرتمندی چون Matlab (نرم افزاری فوق العاده قدرتمند در زمینه محاسبات ریاضی ، هسته Matlab برای سرعت و کارایی بالا به زبان سی نوشته شده‌ است ولی رابط گرافیکی آن به زبان جاوا پیاده سازی گشته‌ است) , Autodesk Maya (مایا یکی از پیشرفته‌ترین نرم‌افزارهای انیمیشن و مدل سازی سه بعدی است که به طور گسترده در استودیوهای فیلم سازی، انیمیشن و همین طور صنعت بازی‌های رایانه‌ای استفاده می‌شود البته از دو زبان دیگر MEL , Python نیز در ساخت این برنامه قدرتمند استفاده شده است) و نرم افزار محبوب Adobe Photoshop (یک پردازشگر گرافیکی قدرتمند است که بدست شرکت Adobe گسترش یافته و برای ایجاد، ترکیب، ویرایش، بازسازی و یا دگرگونی عکس‌ها و نگاره‌ها بکار می‌رود) و نرم افزارهای بی شمار دیگر که توسط این زبان تولید شده اند.

خب بنده در این تایپک قصد دارم آموزش راه اندازی و کار با گرافیک و رسم اشکال گرافیکی دو بعدی (2D) توسط هِدر فایل Graphics.h (این روش تقریبا منسوخ شده ولی برای شروع کار با گرافیک مفید است) که نسبت به کتاب خانه های DirectX و OpenGL دارای سادگی فوق العاده ای است در زبان ++C را تا جایی که بتوانم توضیح بدم. البته دوستان روش های حرفه ای و تخصصی تری در این زمینه توسط ابزار های دیگر قابل انجام است ولی ما در این جا فقط قصد داریم آموزشی ارائه ای کنیم که مقدمه ای باشد برای کارهای جالب تر ، حرفه ای تر و تخصصی تر و در ضمن از استادان خودم در انجمن سنترال کلوبز خواهشمندم بنده را در این زمینه یاری کنند و هر یک از دوستان عزیز سنترالی سوالی در این رابطه داشتند میتوانند به صورت پیام خصوصی برای بنده ارسال کنند و من نیز در صورت دانستن جواب حتما ایشان را راهنمایی میکنم.

باتشکر از شما
آخرين ويرايش توسط MISSILE در جمعه 6 مرداد 1391 00:03, ويرايش شده 1 در کل.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

3 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
abbas.m.k, NeoFighT, FARSHAD.ADL, shola, arash1r, ARafiee, behrad90, ali-j, holamundo, Mahdi1944, khashayar1, Navid1991, nima-rad, TDCC, MASTER, Solver, Mohammad.Jafar, nimilios, CAPTAIN PILOT

Captain I

Captain I



نماد کاربر
پست ها

433

تشکر کرده: 5 مرتبه
تشکر شده: 12 مرتبه
تاريخ عضويت

يکشنبه 12 اردیبهشت 1389 12:48

آرشيو سپاس: 1473 مرتبه در 391 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط abbas.m.k » پنج شنبه 5 مرداد 1391 22:47

با سلام
فکر میکنم بحث خوبیه .گرافیک و قدرت برنامه نویسی سی همراه بشه با هم.حتی زبان های پیشرفته امزوری هم الان دارند استفاده می کنند از این قدرت مثلا بحث +GDI در #c که اگه بتونید آموزش بدید بسیار مفید هست حتی در ساخت پروژه های معمولی
بهترين مترجم كيست كه سكوت را ترجمه كند.

ehsan vahidifar از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب abbas.m.k تشکر کرده اند:
Mohammad.Jafar, nima-rad, CAPTAIN PILOT, FARSHAD.ADL, holamundo, arash1r, MISSILE, khashayar1

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » جمعه 6 مرداد 1391 01:00

خب برای شروع نیاز به یک کامپایلر خوب و تحت ویندوز داریم پس برای این کار از کامپایلر "++Dev-C" استفاده میکنیم شما میتوانید ورژن 4.9.9.2 این کامپایلر را از  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  دانلود کنید.

بعد از اینکه دانلود کامپایلر تمام شد نصبش کنید بعد از نصب اجراش کنید. (کامپایلر "++Dev-C" خیلی خوب و قدرتمنده من شخصا تمام برنامه های زبان C و ++C را در این برنامه پیاده سازی میکنم)

محیط کامپایلر "++Dev-C" :



و بعدش از  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  پوشه فشرده شده Libraries دانلود کنید پس از این که دانلود تمام شد پوشه را از حالت فشرده خارج کنید(با نرم افزار WinRAR). داخل این پوشه دو فایل به نام های graphics و libbgi موجود است.

فایل graphics کپی کرده و به محل نصب کامپایلر بروید اگر کامپایلر را در درایو پیش فرض نصب کرده باشید به این آدرس بروید C:\Dev-Cpp\include در غیر این صورت به جایی که کامپایلر را نصب کرده اید بروید و پوشه Include را باز کرده و فایل graphics را در داخلش پیست کنید.

بعد از این کار فایل libbgi را کپی کرده و در محل نصب کامپایلر داخل پوشه lib (اگر در داخل پوشه Include قرار دارید برای دیدنش یک بار کلید Back را بزنید) پیست کنید.


خب این مرحله به پایان رسید حالا باید کامپایلر را برای انجام برنامه نویسی آماده کنیم برای این کار مراحل زیر را دنبال کنید :

از منوی Start یا از صفحه Desktop روی Shortcut کامپایلر "++Dev-C" کلیک کنید تا برنامه اجرا شود.

حالا از منوی File گزینه New -> Project را کلیک کرده و از پنجره باز شده گزینه Empty project را انتخاب و در قسمت Project options گزینه C++ Project را تیک زده و Ok کنید (در ضمن میتوانید نامی دلخواه برای فایل Project خودتان انتخاب کنید). بعد از این که Ok کردید پنجره ای جهت ذخیره فایل Project باز میشود فایل را در محلی مناسب ذخیره کنید(سعی کنید در یک پوشه جداگانه باشد).

خب بعد از این که کار ذخیره سازی را انجام دادید به سراغ پنل سمت چپ کامپایلر برید و از تَب Project روی نام فایل Project  که ایجاد کردید کلیک راست کرده و گزینه New file را انتخاب کنید یک فایل برای نوشتن کدهای مورد نظر به صورت زیر مجموعه ی فایل Project ایجاد میشود.

بعد از این مرحله از صفحه کلید، کلید Alt + p را فشرده تا پنجره Project options باز شود. از پنجره باز شده تَب Parameters را بزنید و بعد در قسمت ظاهر شده داخل لیست باکس Linker آیتم های زیر را کپی پیست کنید (به همین شکل با خط تیره بدون کمی یا کاستی - اینها یکسری کتابخانه هستند که باید به فایل Project متصل بشن) :

-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32

بعد از این کار پنجره را Ok کنید حالا از منوی File گزینه Save (کلیدهای ترکیبی Ctrl + s) را زده و فایلی را که زیر مجموعه فایل Project قرار دادید را در کنار فایل Project خودتان ذخیره کنید(میتوانید نامش را بصورت دلخواه تغییر دهید فقط دست به فرمت فایل نزنید). خب این مرحله نیز به شکر خدا به پایان رسید حالا کامپایلر را ببندید.

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

انشاءالله ادامه آموزش ها در روزهای متوالی ماه مبارک رمضان.

موفق و پیروز باشید دوستان

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

3 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
behrad90, khashayar1, holamundo, Mahdi1944, TDCC, nimilios, abbas.m.k, sarajoooooon, CAPTAIN PILOT, sara azari, FARSHAD.ADL, ali-j, ARafiee, nima-rad, vahidfp, aligholimorad

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » جمعه 6 مرداد 1391 15:48

بسم الله الرحمن الرحیم

با سلام خدمت شما دوستان عزیز انشاءالله نماز و روزهاتون مورد قبول حق تعالی واقع شده باشد التماس دعا

با بخش دوم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این قسمت قصد داریم یک View یا Viewport با استفاده از هِدر فایل graphics برای رسم اشکال گرافیکی تولید کنیم.

قبل از انجام هر کاری نیاز به دانستن یکسری اطلاعات جزئی در زمینه گرافیک (2D - دو بعدی) کامپیوتری داریم. در زیر مواردی همراه با توضحیات آورده شده است :

مانیتور گرافیکی (Graphics monitor) :

مانیتورهای مورد استفاده در سیستم های خانگی، مانیتورهای گرافیکی هستند. سطح داخلی صفحه مانیتورها، دارای یک سری سلول هاست که به رنگ های قرمز، سبز و آبی حساس هستند. همچنین هر مانیتور، دارای سطرهای افقی است که با دقت در مانیتور می توانید آنها را ملاحظه کنید. در داخل مانیتور (منظور مانیتور های لامپ اشعه کاتدی است به اختصار CRT)، یک تفنگ الکترونیکی وجود دارد که با حرکت خود منجر به نوشتن داده های تصویری در روی سطح داخل صفحه مانیتور می شود. نوشتن داده های تصویر در مانیتور از چپ به راست و از بالا به پایین صورت می گیرد. به این صورت که تفنگ الکترونیکی از گوشه بالایی سمت چپ مانیتور کار خود را آغاز کرده و پس از تاباندن اشعه به سلول های سطراول، به سطر دوم مانیتور رفته و همین کار را تا سطر آخر ادامه  می دهد. سپس تفنگ الکترونیکی دوباره به سطر اول رفته و این روند را تکرار می کند. به این عمل، احیای تصویر (Refresh) می گوییم.توجه نمایید ساختار و فناوری به کار رفته در مانیتورهای LCD و LED با صفحه نمایش CRT کاملا متفاوت است.

نمایی از ساختار لامپ تصویر CRT :




پیکسل (Pixel) :

مخفف واژه های Picture Element است که به معنای عنصر تصویری میباشد. اجزائی که با کنار هم قرار گرفتن، یک تصویر گرافیکی را میسازند یا کوچکترین واحد سازنده تصویر که غالبا بشکل مربع میباشد و حاوی اطلاعات رنگی است. تصویری که توسط پیکسل ایجاد شود بیت مپ (Bitmap) یا رستر(Raster) گفته می شود. هرچه تعداد پیکسل ها بیشتر باشد کیفیت تصویر بالاتر خواهد رفت. پیکسل ها عرض و ارتفاع ندارند(ثابت هستند) و فقط شامل یک سری اطلاعات می باشند. یک تصویر دیجیتال شامل سه مقدار عددی RGB می باشد (آبی،سبز،قرمز) که رنگ را مشخص می کند. در پیکسل هر مقدار از این رنگ ها توسط 8 بیت از اطلاعات مشخص می شوند. 3 ردیف 8 بیتی 24 بیت می شود.در گذشته از پالت های رنگ به جای سه تایی های RGB استفاده میشد. پالت ها شامل 256 رنگ بودند. با پیشرفت تکنولوژی، سه تایی های RGB جایگزین پالت ها شدند و به دلیل افزایش وسعت طیف رنگها( 16 یا 32 میلیون رنگ)، منجر به افزایش قابل ملاحظه ای در کیفیت گرافیک کامپیوتری شدند.
هر 8 بیت می تواند شامل 256 مقدار باشد (0-255) برای مثال (250,160,5) به معنی : قرمز = 250، سبز = 160 و آبی = 5 می باشد که یک پیکسل نارنجی را مشخص می کند.

نمایی از پیکسل ها در یک صفحه نمایش CRT :


دوستان توضیحات و مطالب بالا گوشه کوچکی از دنیای گرافیک کامپیوتری بودند. ناگفته نماند در زمینه ی گرافیک کامپیوتری کتاب های زیادی نگاشته شده است و مطالب فراوان و گوناگونی وجود دارد ولی در این جا به همین مطالب اکتفا میکنیم.


خب برگردیم به سراغ کار اصلیمون، برای شروع کامپایلر "++Dev-C" را اجرا کنید. از منوی File گزینه ی Open project or file (کلیدهای ترکیبی Ctrl + O) را کلیک کنید و بعد در پنجره باز شده فایل پروژه ای که در مرحله قبل آماده کردیم را یافته و باز کنید.

توجه : فایل های پروژه ای کامپایلر "++Dev-C" آیکونی بشکل زیر دارند :



پس از اینکه فایل پروژه را باز کردید طبق شکل زیر از پنل سمت چپ برنامه روی تَب Project کلیک کرده تا نام فایل پروژه باز شده نمایان شود حالا روی + کنار اسم فایل پروژه کلیک کنید تا فایل زیر مجموعه پروژه که در قسمت اول ساختیم نمایش یابد و بعد روی آن کلیک کنید تا باز شود :



حالا باید در این فایل قطعه کدهای زیر را وارد کنیم :



     <include <graphics.h#

                      ()int main
                                  }
                    ;return 0  
                                  {



- دستور اول یک ماکرو است (ماکرو : دستورات پیش پردازنده) که باعث میشه فایل هِدر graphics.h به فایل برنامه ضمیمه بشه تا ما بتوانیم از توابع داخل آن در برنامه خودمان بهره ببریم.
- دستور دوم تابع ()main است که در برنامه های نوشته شده در زبان برنامه نویسی ++C به عنوان بدنه اصلی برنامه شناخته میشود (البته در مواردی استثنائی از این تابع استفاده نمیشود مانند برنامه های نوشته شده توسط Win32 API). هیچ برنامه ای در وجود ندارد که فاقد این تابع باشد. بنابراین، تابع ()main یکی از اجزای مهم برنامه های زبان C به حساب میاید.
- دستور سوم یعنی return 0 باعث میشود اگر برنامه یعنی تابع ()main درست اجرا شد مقداری به سیستم عامل برگردانده شود تا سیستم عامل متوجه گردد که برنامه با موفقیت به پایان رسیده است.

برای این که بتوانیم یک Viewport یا همان پنجره ای برای رسم اشکال گرافیکی تولید کنیم باید از تابعی به اسم ()initwindow استفاده کنیم.(تابع دیگری به اسم ()initgraph موجود است ولی به دلایلی بهتره از این تابع استفاده کنیم)

ساختار پارامترهای ورودی تابع ()initwindow به شکل زیر است :

( int initwindow (int width ,int height ,const char* title ,int left ,int top ,bool dbflag ,bool closeflag

توضیحات :

width : عرض پنجره تولید شده برحسب پیکسل از نوع صحیح (int)

height : طول پنجره تولید شده برحسب پیکسل از نوع صحیح (int)

title : عنوان پنجره تولید شده از نوع رشته ای با تخصیص حافظه ی پویا و بصورت ثابت (*const char)

left : موقعیت عرضی(X) پنجره در صفحه نمایش از نوع صحیح (int)

top : موقعیت طولی(Y) پنجره در صفحه نمایش از نوع صحیح (int)

dbflag : اگر مقدار true بگیرد بصورت اتوماتیک بافری دوبل(دو برابر) به پنجره تولید شده اختصاص میدهد از نوع بولی (bool)

closeflag : اگر مقدار false بگیرد دکمه close پنجره غیر فعال میشود از نوع بولی (bool)



خیلی خب حالا کد تابع مقداردهی شده زیر را بعد از آکولاد باز شده تابع ()main و بالای دستور return 0 قرار دهید :

;( initwindow (400 ,400 ,"Viewport" ,300 ,200

و بعد از این عمل دستورات زیر را به ترتیب در زیر تابع ()initwindow قرار دهید :

;()getch

;()closegraph

تابع ()getch باعث میشود برنامه پس از اجرا منتظر دریافت کارکتری از صفحه کلید بماند و پنجره تولید شده بصورت آنی بسته نشود.(توجه : اگر کلیدی را از صفحه کلید در حین اجرا بودن برنامه بفشارید برنامه بسته میشود)

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

حالا باید کد شما به شکل زیر درآمده باشد :



                                           <include <graphics.h#

                                                            ()int main
                                                                        }
       ;( initwindow (400 ,400 ,"Viewport" ,300 ,200  
                                                           ;()getch  
                                                    ;()closegraph  
                                                         ;return 0  
                                                                        {



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

نتیجه حاصل از انجام مراحل بالا :



خب خسته نباشید این قسمت نیز به پایان رسید امیدوارم از این آموزش لذت برده باشید.

انشاءالله ادامه آموزش ها در روزهای متوالی ماه مبارک رمضان.

موفق و پیروز باشید دوستان

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
Ali$amir, ARafiee, behrad90, holamundo, Mahdi1944, ali-j, nima-rad, TDCC, abbas.m.k, CAPTAIN PILOT, Mohammad.Jafar, FARSHAD.ADL

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » شنبه 7 مرداد 1391 14:32

بسم الله الرحمن الرحیم

با عرض سلام خدمت دوستان گرامی، نماز روزه هاتون مورد قبول حق تعالی

با بخش سوم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این قسمت قصد داریم پنجره کنسول (Console window) را غیر فعال کرده و نیز طریقه رسم پیکسل (Pixel) در صفحه نمایش را بیاموزیم.

خب اگر دقت کنید موقع اجرا برنامه ای که در بخش دوم نوشتیم علاوه بر پنجره گرافیکی یک کنسول مشکی رنگ در پشت این پنجره ظاهر میشه. از این کنسول میتوان استفاده های زیادی در برنامه های گرافیکی و غیر گرافیکی کرد ولی شاید بعضی از دوستان از وجود این کنسول راضی نباشند پس برای برطرف کردن این مشکل باید کنسول را مخفی کنیم برای انجام این کار باید دستوارت مشخص شده با رنگ بنفش را به کد برنامه ای که در قسمت قبل نوشتیم اضافه کنیم تا کدمون بشکل زیر در بیاد. برای شروع کار فایل پروژتون که در مراحل قبلی ساختید را باز کنید.(طریقه باز کردن فایل پروژه در مرحله قبل توضیح داده شد) :



define _WIN32_WINNT 0x0500 #
<include <graphics.h#

                                                            ()int main
                                                                        }
;()HWND Handle = GetConsoleWindow  
;( ShowWindow(Handle ,SW_HIDE  
;( initwindow (400 ,400 ,"Viewport" ,300 ,200  
                                                           ;()getch  
                                                    ;()closegraph  
                                                         ;return 0  
                                                                        {



توضیحات :

define _WIN32_WINNT 0x0500 # : این یک ثابت از نوع ماکرو (ماکروها : دستورات پیش پردازنده هستند) است. برای اینکه بتوانیم از تابع ()GetConsoleWindow (توجه : این تابع هیچ پارامتر ورودی ندارد) استفاده کنیم نیاز به تعریف این ثابت داریم.

(HWND Handle = GetConsoleWindow(void : با این دستور دستگیره پنجره کنسول (Window handle) جاری را توسط متغیری به اسم Handle که از نوع HWND (مخفف : Handle , Window) است (نوع HWND چهار بایت فضاء اشغال میکند و برابر است با نوع long ) در اختیار میگیریم تا بتوانیم کنسول را کنترل کنیم.(توجه : تابع ()GetConsoleWindow از توابع API ویندوز است و در فایل Kernel32.dll ویندوز قرار دارد)

( ShowWindow(HWND hWnd ,int nCmdShow : توسط این تابع پنجره کنسول را کنترل میکنیم به این طریق که متغیر Handle را که در دستور قبل ساختیم و مقداردهی کردیم در پارامتر ورودی اول این تابع قرار میدهیم و از طریق پارامتر دوم همین تابع کنترلش میکنیم. پارامتر ورودی دوم این تابع میتواند مقادیر ثابت از پیش تعیین شده زیر را بپذیرد (توجه : تابع ()ShowWindow از توابع API ویندوز است و در فایل User32.dll ویندوز قرار دارد) :

1 - SW_HIDE : پنجره را مخفی میکند. (معادل عددی این دستور عدد 0 است، یعنی شما میتوانید بجای دستور SW_HIDE از عدد 0 استفاده کنید)

2 - SW_SHOW : پنجره مخفی شده را ظاهر میکند. (معادل عددی این دستور عدد 5 است)

3 - SW_MAXIMIZE : پنجره را تا جایی که ممکن است عریض و بزرگ میکند. (معادل عددی این دستور عدد 3 است)

4 -
SW_MINIMIZE : پنجره را کوچک کرده و آن را در نوار وظیفه (Taskbar) قرار میدهد. (معادل عددی این دستور عدد 4 است)

5 - SW_RESTORE : اگر پنجره جاری روی حالات 3 و 4 باشد توسط این دستور به حالت عادی بر میگردد. (معادل عددی این دستور عدد 9 است)

و...

همان طور که ملاحظه میکنید من از دستور اول یعنی SW_HIDE استفاده کردم تا پنجره کنسول هنگام اجرا برنامه مخفی بشه.

بعد از انجام این کارها کلیدهای Ctrl + F9 را همزمان از صفحه کلید بفشارید تا تغییرات جدید اعمال شود.

خب نوبت به رسم پیکسل (Pixel) رسید. برای انجام این کار ما از تابعی به اسم ()putpixel استفاده میکنیم.

ساختار پارامترهای ورودی تابع ()putpixel به شکل زیر است :

( void putpixel(int x ,int y ,int color

توضیحات :

x : موقعیت عرضی پیکسل در پنجره گرافیکی برحسب پیکسل از نوع صحیح (int)

y : موقعیت طولی پیکسل در پنجره گرافیکی برحسب پیکسل از نوع صحیح (int)


color : رنگ پیکسل در پنجره گرافیکی را مشخص میکند که برای این پارامتر میتوانید از اعداد 0 تا 15 استفاده کنید که هر یک، یک رنگ منحصر به فرد تولید میکنند البته بجای این اعداد میتوانید از تابع ()COLOR استفاده نمایید که شرح این تابع را در ادامه ی همین آموزش خواهیم گفت و یا میتوانید از مقادیر ثابت زیر استفاده کنید. از نوع صحیح(int)



                            BLACK                      BLUE                        GREEN                       CYAN

                   RED                         MAGENTA                 BROWN                      LIGHTGRAY

                    DARKGRAY               LIGHTBLUE                LIGHTGREEN               LIGHTCYAN

                    LIGHTRED                LIGHTMAGENTA         YELLOW                     WHITE



ساختار پارامترهای ورودی تابع ()COLOR به شکل زیر است :

( int putpixel(int r ,int g ,int b

توضیحات :

r : تعیین رنگ قرمز در رنگ اصلی، عددی بین 0 تا 255(256 رنگ) از نوع صحیح (int)

g : تعیین رنگ سبز در رنگ اصلی، عددی بین 0 تا 255(256 رنگ) از نوع صحیح (int)

b : تعیین رنگ آبی در رنگ اصلی، عددی بین 0 تا 255(256 رنگ) از نوع صحیح (int)


خب حالا مثال هایی از مطالب بالا میزنیم :

مثال اول : رسم یک پیکسل سبز رنگ در حالت عادی (کد رنگ بنفش)



define _WIN32_WINNT 0x0500 #
<include <graphics.h#

                                                            ()int main
                                                                        }
;()HWND Handle = GetConsoleWindow  
;( ShowWindow(Handle ,SW_HIDE  
;( initwindow (400 ,400 ,"Viewport" ,300 ,200  
;( 10, 200, 300)putpixel  
                                                           ;()getch  
                                                    ;()closegraph  
                                                         ;return 0  
                                                                        {
نتیجه اجرای کد بالا :






مثال دوم : رسم یک پیکسل زرد رنگ با رنگ های جعبه رنگ (کد رنگ بنفش)



define _WIN32_WINNT 0x0500 #
<include <graphics.h#

                                                            ()int main
                                                                        }
;()HWND Handle = GetConsoleWindow  
;( ShowWindow(Handle ,SW_HIDE  
;( initwindow (400 ,400 ,"Viewport" ,300 ,200  
;( putpixel(300 ,200 ,YELLOW  
                                                           ;()getch  
                                                    ;()closegraph  
                                                         ;return 0  
                                                                        {
نتیجه اجرای کد بالا :






مثال سوم : رسم یک پیکسل سفید رنگ با رنگ تولید شده توسط تابع ()COLOR (کد رنگ بنفش)




define _WIN32_WINNT 0x0500 #
<include <graphics.h#

                                                            ()int main
                                                                        }
;()HWND Handle = GetConsoleWindow  
;( ShowWindow(Handle ,SW_HIDE  
;( initwindow (400 ,400 ,"Viewport" ,300 ,200  
;( (255,255,255)putpixel(300 ,200 ,COLOR  
                                                           ;()getch  
                                                    ;()closegraph  
                                                         ;return 0  
                                                                        {
نتیجه اجرای کد بالا :






حالا یک مثال جالب : رسم نقاط اتصال ضلع های یک 5 ضلعی توسط یک آرایه دو بعدی(ماتریس) و تابع ()putpixel :



define _WIN32_WINNT 0x0500 #
<include <graphics.h#

                                                            ()int main
                                                                        }
;()HWND Handle = GetConsoleWindow  
;( ShowWindow(Handle ,SW_HIDE  
;( initwindow (400 ,400 ,"Viewport" ,300 ,200  

{300,150}} =
[int Points[5][2  
{250,200},                           
{350,200},                           
{270,250},                           
;{{330,250},                           

;(
++for( int a=0; a<5; a  
;( putpixel(Points[a][0] ,Points[a][1] ,14       
                         
                                 ;()getch  
                                                    ;()closegraph  
                                                         ;return 0  
                                                                        {
نتیجه اجرای کد بالا :





در صورت داشتن مشکل میتوانید به بنده پیام خصوصی بزنید تا کمکتان کنم.

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

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

انشاءالله ادامه آموزش ها در روزهای متوالی ماه مبارک رمضان.

موفق و پیروز باشید دوستان

توجه : هر گونه کپی برداری از این تایپک و مطالب آموزشی آن تنها با درج نام سایت www.centralclubs.com مجاز است. با تشکر فراوان از شما
.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

asbaghery از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
behrad90, TDCC, Mahdi1944, nima-rad, CAPTAIN PILOT, FARSHAD.ADL, ARafiee, abbas.m.k, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » شنبه 7 مرداد 1391 22:02

سلام دوستان

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

با تشکر از شما :razz:

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
Mahdi1944, amir_198190, nima-rad, TDCC, abbas.m.k, CAPTAIN PILOT, FARSHAD.ADL, ARafiee, behrad90, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » يکشنبه 8 مرداد 1391 21:06

بسم الله الرحمن الرحیم

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

با بخش چهارم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این قسمت قصد داریم نحوه رسم یک دایره(Circle)، مارپیچ(Helix) و یک تابش ساده(Glow) را با استفاده از تابع ()putpixel بیاموزیم.

برای شروع کامپایلر مورد نظر را باز کرده و فایل پروژتون را باز کنید (تمامی این مراحل در بخش های قبلی گفته شد).


مثال اول : رسم یک دایره تو خالی توسط توابع ()cos() ، sin و تابع ()putpixel :




توضیحات کدهای شماره گذاری شده در تصویر :

دستور 1 : این دستور هِدر فایل math را به برنامه ضمیمه میکند تا ما بتوانیم از توابع ()cos() ، sin استفاده کنیم. توجه این هِدر فایل شامل توابع مهم ریاضی است در ضمن شما میتوانید توابع استاندارد ریاضی خود را به آن بیافزایید و آن را در برنامه هایتان صدا بزنید.

دستور 2 : در این دستور چند متغیر با نام های مشخص(نکته : همیشه سعی کنید نام هایی برای متغیرها در برنامه انتخاب کنید که کارایی آن متغیر را بیان کند این کار باعث میشه خوانایی برنامتون بالا بره) از نوع صحیح (int) تعریف کردیم که کار کردشان به شرح زیر است :

X_Position : موقعیت عرضی نقطه مرکز دایره را مشخص میکند.

Y_Position : موقعیت طولی نقطه مرکز دایره را مشخص میکند.

X : موقعیت عرضی هر یک از پیکسل های تولید کننده دایره را مشخص میکند.(توجه این متغیر توسط خود برنامه مقداردهی میشود)

Y : موقعیت طولی هر یک از پیکسل های تولید کننده دایره را مشخص میکند.(توجه این متغیر توسط خود برنامه مقداردهی میشود)

Radius : شعاع دایره را مشخص میکند.


دستور 3 : یک حلقه For که اَندیس آن از 0 (درجه) شروع شده و شرط آن تا زمانی است که اَندیس به مقدار 360(درجه) برسه، گام حلقه هم مقدار کمتر یک دادیم چون باعث میشه فاصله بین هر دو تا پیکسل کم بشه و پیکسل ها بهم نزدیک بشن.

دستور 4 : شروع دستورات درون حلقه.

دستور 5 : این دستور در واقع یک فرمول ریاضی است که باعث میشه موقعیت عرضی(X) هر یک از پیکسل های سازنده دایره(Circle) مشخص و تولید بشه.(توجه متغیر Degree(درجه) توسط حلقه در حال تغییره).

دستور 6 : این دستور در واقع یک فرمول ریاضی است که باعث میشه موقعیت طولی(Y) هر یک از پیکسل های سازنده دایره(Circle) مشخص و تولید بشه.(توجه متغیر Degree(درجه) توسط حلقه در حال تغییره).

دستور 7 : در این دستور تابع ()putpixel را با مقادیری که در فرمول های بالا به دست آموردیم مقداردهی میکنیم تا شروع به رسم پیکسل نماید(توجه این دستور حتما باید داخل حلقه For قرار گیرد).

دستور 8 : پایان دستورات درون حلقه.

توجه : من در این مثال فراموش کردم بعد تابع ()getch، تابع ()closegraph را برای آزاد کردن فضای اختصاص یافته به این کار را قرار بدم شما حتما این تابع را به دستورات اضافه کنید.

نتیجه اجرای دستورات بالا :









مثال دوم : رسم یک مارپیچ توسط توابع ()cos() ، sin و تابع ()putpixel :



  

توضیحات کدهای شماره گذاری شده در تصویر :

دستور 1 : در اینجا متغیر Radius را نیز به حلقه For اضافه کرده ایم(توجه کنید متغیر  بیرون از حلقه حذف شده است) تا بصورت اتوماتیک مقدارش افزایش یابد در ضمن هر چه گام متغیر Radius را  کم و زیاد کنید مارپیچ کوچک یا بزرگ میشود.

دستور 2 : شروع دستورات درون حلقه.

دستور 3 : این دستور در واقع یک فرمول ریاضی است که باعث میشه موقعیت عرضی(X) هر یک از پیکسل های سازنده مارپیچ(Helix) مشخص و تولید بشه البته برای تولید مارپیچ به قسمت Degree * 3.14 / 180 نیاز است مگر نه نتیجه کار چیز دیگری میشه.(توجه متغیر Degree(درجه) توسط حلقه در حال تغییره).

دستور 4 : این دستور در واقع یک فرمول ریاضی است که باعث میشه موقعیت طولی(Y) هر یک از پیکسل های سازنده مارپیچ(Helix) مشخص و تولید بشه البته برای تولید مارپیچ به قسمت Degree * 3.14 / 180 نیاز است مگر نه نتیجه کار چیز دیگری میشه.(توجه متغیر Degree(درجه) توسط حلقه در حال تغییره).

دستور 5 : پایان دستورات درون حلقه.

توجه : من در این مثال فراموش کردم بعد تابع ()getch، تابع ()closegraph را برای آزاد کردن فضای اختصاص یافته به این کار را قرار بدم شما حتما این تابع را به دستورات اضافه کنید.

نتیجه اجرای دستورات بالا (مارپیچ با سه دور 360 درجه -> 1080 درجه) :








مثال سوم : رسم یک تابش(Glow) توسط حلقه های For پیازی(تودرتو)، توابع ()cos() ، sin و تابع ()putpixel :




  

توضیحات :

تمام فرآیند ساخت این تابش توسط حلقه خارجی کنترل میشه چه در بلور(Blur) شدن تابش(Glow) و چه در رسم دایره های پی در پی با شعاع های متفاوت. سعی کنید این الگوریتم را ردیابی(Trace) کنید. در ضمن توسط گام حلقه خارجی یعنی Radius+=0.1 شما میتوانید کیفیت(Quality) تابش(Glow) را کم یا زیاد کنید. مثلا مقدار Radius+=0.9 باعث میشود کیفیت تابش به پایین ترین حد خود برسد امتحانش کنید و نتیجه را ببینید.

نتیجه اجرای دستورات بالا با کیفیت 0.1 :





خب این قسمت از آموزش ها نیز به پایان رسید امیدوارم لذت برده باشید. در قسمت های بعدی سعی میکنم توابع دیگر و کاربرد هایشان را بازگو کنم.

انشاءالله ادامه آموزش ها در روزهای متوالی ماه مبارک رمضان.

موفق و پیروز باشید دوستان

توجه : هر گونه کپی برداری از این تایپک و مطالب آموزشی آن تنها با درج نام سایت www.centralclubs.com مجاز است. با تشکر فراوان از شما
.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

mk3000 از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
Mahdi1944, TDCC, abbas.m.k, CAPTAIN PILOT, behrad90, FARSHAD.ADL, ARafiee, nima-rad, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » دوشنبه 9 مرداد 1391 21:34

بسم الله الرحمن الرحیم

با عرض سلام خدمت شما دوستان گرامی، تاعات و عبادات شما مورد قبول حق تعالی

با بخش پنجم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این بخش میخواهیم چندین توابع از پیش نوشته شده موجود در هِدر فایل graphics که برای رسم خط(Line)، مستطیل(Rectangle)، دایره(Circle)، بیضی(Ellipse)، کمان(Arc) و چند ضلعی(Polygon) استفاده میشوند را مورد بررسی قرار دهیم و کاربرد دو تابع ()setcolor و ()cleardevice را نیز شرح دهیم. در ضمن آموزش ساخت یک طیف رنگی(Gradient، حتما در نرم افزار فتوشاپ دیدیدش) را نیز بیاموزیم.

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




توضیحات دستورات بالا :

دستور 1 : از تابع ()line جهت رسم خط استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void line(int x1 ,int y1 ,int x2 ,int y2

x1 : موقعیت عرضی نقطه اول تشکیل دهنده ی پاره خط از نوع صحیح (int)

y1 : موقعیت طولی نقطه اول تشکیل دهنده ی پاره خط از نوع صحیح (int)

x2 : موقعیت عرضی نقطه دوم تشکیل دهنده ی پاره خط از نوع صحیح (int)

y2 : موقعیت طولی نقطه دوم تشکیل دهنده ی پاره خط از نوع صحیح (int)



دستور 2 : از تابع ()rectangle جهت رسم مستطیل و مربع استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void rectangle(int left, int top, int right, int bottom


left : موقعیت عرضی نقطه بالا سمت چپ شکل از نوع صحیح (int)

top : موقعیت طولی نقطه بالا سمت چپ شکل از نوع صحیح (int)

right : موقعیت عرضی نقطه پایین سمت راست شکل از نوع صحیح (int)

bottom : موقعیت طولی نقطه پایین سمت راست شکل از نوع صحیح (int)



دستور 3 : از تابع ()circle جهت رسم دایره استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void circle
(int x ,int y ,int radius

x : موقعیت عرضی نقطه مرکز شکل دایره از نوع صحیح (int)

y : موقعیت طولی نقطه مرکز شکل دایره از نوع صحیح (int)

radius : شعاع شکل دایره از نوع صحیح (int)



دستور 4 : از تابع ()ellipse جهت رسم بیضی استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius


x : موقعیت عرضی نقطه مرکز شکل بیضی از نوع صحیح (int)

y : موقعیت طولی نقطه مرکز شکل بیضی از نوع صحیح (int)

stangle : درجه شروع(Start angle) رسم خط سازنده شکل بیضی از نوع صحیح(int)

endangle : درجه پایان(End angle) رسم خط سازنده شکل بیضی از نوع صحیح(int)

xradius : شعاع افقی شکل بیضی از نوع صحیح (int)

yradius : شعاع عمودی شکل بیضی از نوع صحیح (int)



دستور 5 : از تابع ()arc جهت رسم کمان استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void arc(int x, int y, int stangle, int endangle, int radius


x : موقعیت عرضی نقطه مرکز شکل کمان از نوع صحیح (int)

y : موقعیت طولی نقطه مرکز شکل کمان از نوع صحیح (int)

stangle : درجه شروع(Start angle) رسم خط سازنده شکل کمان از نوع صحیح(int)

endangle : درجه پایان(End angle) رسم خط سازنده شکل کمان از نوع صحیح(int)
  
  
radius : شعاع شکل کمان از نوع صحیح (int)



دستور 6 : یک آرایه تَک بُعدی(List) است که اگر دقت کنید طول آرایه مشخص نشده است([طول آرایه]int Points) به این نوع آرایه ها، آرایه با طول نامشخص میگویند.(توجه : این نوع آرایه بصورت اتوماتیک تعداد عنصرهای خود را تشخیص داده و متناسب با آن حافظه(RAM) مورد نیاز را تخصیص میدهد).در این مثال این آرایه مقداردهی اولیه شده است، به ترتیب از اولین عنصر تا آخرین عنصر آرایه دوتا دوتا موقعیت عرضی(x) و طولی(y) یک نقطه هستند پس با این حساب ما در اینجا 6 نقطه مشخص داریم.



دستور 7 : از تابع ()drawpoly جهت رسم چند ضلعی از جمله مثلث استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void drawpoly
(int n_points, int* points

n_points : تعداد نقاط سازنده ی چند ضلعی از نوع صحیح (int)

points : آرایه ای که در دستور بالایی ساختیم و مقداردهی کردیم را باید اینجا صدا بزنیم تا تابع ()drawpoly نقاط تعیین شده را رسم و بین آنها با خط ارتباط برقرار کند.(ستاره ای که بعد از نوع آرایه آمده است نشان دهنده این است که این پارامتر اشاره گر(Pointer) است) از نوع صحیح (int)



نتیجه اجرای دستورات بالا :







حالا نوبت به توضیح توابع ()setcolor و ()cleardevice میرسه :





توضیحات دستورات بالا :

دستور 1 : اگر خوب در توابع توضیح داده شده مثال بالا دقت کرده باشید متوجه شدید که در این توابع پارامتری برای تنظیم رنگ شکل در نظر گرفته نشده است پس باید راهی برای تنظیم رنگ این شکل ها وجود داشته باشد، راه حل استفاده از تابع ()setcolor قبل از رسم یک شکل است و اگر ما قبل هر یک از توابع بالا که برای رسم اشکال اصلی هندسی استفاده میشوند از این تابع استفاده کنیم رنگ شکل تنظیم میشود. پارامتر ورودی این تابع به شرح زیر است(توجه تابع ()COLOR که در پارامتر ورودی تابع ()setcolor قرار گرفته است در بخش سوم توضیح داده شد) :

( void circle(int color

color : از این پارامتر برای تعیین رنگ استفاده میشود. از نوع صحیح (int)



دستور 2 : همان طور که مشاهده میکنید این دستور غیر فعال است(بصورت کامنت درج شده است، برای درج کامنت در زبان C و ++C میتوانید از علامت های دابل اِسلَش و اِسلَش ستاره برای شروع و از ستاره اِسلَش برای پایان توضیحات استفاده کنید مثال :  Your comment // و /* Your comment */ توصیه من به دوستان این است که همیشه در داخل برنامه هاشون از توضیحات استفاده کنند مخصوصاً در برنامه های بزرگ چون این کار باعث میشه خوانایی برنامشون بالا بره) ولی اگر اون دوتا اِسلَش( // ) قبل از دستور را بردارید تابع شناخته میشود و توسط کامپایلر ترجمه و به کد اصلی برنامه اضافه میشود.خب کاربرد این تابع چیست؟ تابع ()cleardevice کل پنجره گرافیکی را پاک و موقعیت جاری را به (0,0) منتقل میکند. من در این مثال از اجرای کردن این تابع صرف نظر کردم شما حتما امتحانش کنید، در قسمت های بعد برای ساخت پویانمایی(Animation) لازمش داریم.


نتیجه ی اجرای دستورات بالا :







رسیدیم سراغ ساخت طیف رنگ(Gradient) :



توضیحات :

الگوریتم بالا تشکیل شده از حلقه های For پیازی(Nested loop حلقه های تو در تو) و اَندیس هر دو حلقه از 0 شروع به افزایش کرده تا شرط حلقه نقض شود و چون ما در تابع ()COLOR برای هر رنگ مجاز به وارد کردن عددی بین 0 تا 255 بودیم(256 رنگ متفاوت) شرط پایان حلقه ها را 255 گذاشتیم که سرجمع میشه 256(خود صفر هم حساب میشه)، تابع ()putpixel هم متناسب با مقادیر b , a شروع به رسم پیکسل های ردیفی میکند و چون طول(Height) و عرص(Width) پنجره را مقدار 256 قرار دادیم کل پنجره را پر میکند.(توجه : این طیف رنگی(Gradient) شامل 65536 رنگ متفاوت است، 65536 = 256 * 256)

نتیجه اجرای دستورات بالا :





خب دوستان خسته نباشید این بخش نیز به پایان رسید، هِدر فایل graphics دارای توابع گرافیکی زیادی است و ما سعی میکنیم در اینجا پر کاربرد ترین آنها و تکنیک های ساده گرافیک دوبعدی(2D) کامپیوتری را بیان کنیم البته در طول آموزش های پی در پی. امیدوارم از این آموزش لذت برده باشید.

نکته : تصاویر آپلود شده در مرورگر فایرفاکس مقداری از سایز اصلی کوچکتر نشان داده میشن به همین خاطر دوستانی که از این مرورگر استفاده میکنند برای دیدن تصاویر در اندازه اصلی باید روی آنها کلیک راست کرده و گزینه View Image را انتخاب کنند.

انشاءالله ادامه آموزش ها در طول ماه مبارک رمضان.

موفق و پیروز باشید دوستان

توجه : هر گونه کپی برداری از این تایپک و مطالب آموزشی آن تنها با درج نام سایت www.centralclubs.com مجاز است. با تشکر فراوان از شما
.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
abbas.m.k, TDCC, Mahdi1944, CAPTAIN PILOT, behrad90, FARSHAD.ADL, ARafiee, nima-rad, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » پنج شنبه 12 مرداد 1391 22:00

بسم الله الرحمن الرحیم

با عرض سلام خدمت شما دوستان گرامی، نماز و روزهاتون مورد قبول حق تعالی انشاءالله

با بخش ششم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این قسمت میخواهیم روش تولید متن(Text) در پنجره گرافیکی، تعیین سبک(Style) و تراز بندی(Alignment) آن توسط سه تابع ()settextstyle() ، outtextxy و ()settextjustify، تعیین موقعیت(Position) پنجره گرافیکی در مرکز صفحه نمایش با ترکیب یک تابع Application Programming Interface) API) و یک فرمول ساده را بیاموزیم.

خب کامپایلر "++Dev-C" را برای برنامه نویسی آماده کنید(برای اطلاعات بیشتر در این زمینه به بخش های قبلی مراجعه کنید).


تولید متن(Text) ، تعیین سبک(Style) و تراز بندی(Alignment) آن :




توضیحات دستورات بالا :

دستور 1 : توسط تابع ()settextstyle قبل از تولید متن میتوانید نوع فونت، چیدمان متن(افقی(Horizontal) یا عمودی(Vertical)) و سایز رشته متن را تعیین کنید که پارامترهای ورودی آن به شرح زیر است :

الگوی تابع : ( void settextstyle(int font ,int direction ,int charsize

font : تعیین نوع الگوی فونت که میتواند عددی باشد از 0 تا 10(توجه : این مقادیر عددی دارای ثابت هایی نیز هستند که از توضیح آن ها صرف نظر میکنیم). از نوع صحیح (int)

direction : تعیین جهت نمایش رشته متنی که میتواند ثابت های زیر را بپذیرد : از نوع صحیح (int)

HORIZ_DIR
: نمایش متن به صورت افقی(Horizontal) - [معادل عددی : 0 ]

VERT_DIR : نمایش متن به صورت عمودی(
Vertical) - [معادل عددی :  1 ]

charsize : تعیین سایز رشته متنی که میتواند عددی باشد از 0 تا 10. از نوع صحیح (int)



دستور 2 : توسط تابع ()settextjustify قبل از تولید متن میتوانید نوع ترازبندی رشته متنی را نسبت به موقعیت جاری پنجره گرافیکی(بعدا توضیح داده میشود) تعیین کنید که پارامترهای ورودی آن به شرح زیر است :

الگوی تابع : ( void settextjustify(int horiz, int vert

horiz : تعیین ترازبندی رشته متنی در حالت افقی(Horizontal). از نوع صحیح (int)

vert : تعیین ترازبندی رشته متنی در حالت عمودی(Vertical). از نوع صحیح (int)

دو پارامتر بالا میتوانند مقادیر ثابت زیر را بپذیرند :

LEFT_TEXT : موقیعت جاری در سمت چپ متن باشد.[معادل عددی : 0 ]

CENTER_TEXT : موقیعت جاری در مرکز متن باشد.[معادل عددی : 1 ]

RIGHT_TEXT : موقیعت جاری در سمت راست متن باشد.[معادل عددی : 2 ]

BOTTOM_TEXT : موقیعت جاری در پایین متن باشد.[معادل عددی : 3 ]

TOP_TEXT : موقیعت جاری در بالای متن باشد.[معادل عددی : 4 ]



دستور 3 : توسط تابع ()outtextxy میتوانید متن مورد نظر خود را در موقعیت تعیین شده در پنجره گرافیکی نمایش دهید که پارامترهای ورودی آن به شرح زیر است :

الگوی تابع : ( void outtextxy(int x, int y, char *textstring

x : تعیین موقعیت عرضی متن در پنجره گرافیکی. از نوع صحیح (int)

y : تعیین موقعیت طولی متن در پنجره گرافیکی. از نوع صحیح (int)

textstring : تعیین رشته مورد نظر برای نمایش در پنجره گرافیکی. از نوع رشته ای (اشاره گر، تخصیص حافظه بصورت پویا)(char)


نتیجه ی اجرای دستورات بالا :






تعیین موقعیت(Position) پنجره گرافیکی(Viewport) در مرکز صفحه نمایش :



توضیحات دستورات بالا :

دستور 1 : طول و عرض پنجره گرافیکی(Viewport) را در دو ثابت با نام های Viewport Height)VpH)  و Viewport Width)VpW) از نوع صحیح قرار میدهیم.



دستور 2 : در این قسمت 4 متغیر از نوع صحیح تعریف میکنیم. دو متغیر اول برای نگهداری طول و عرض کل صفحه نمایش و دو متغیر دوم برای نگهداری موقعیت مرکزی صفحه نمایش استفاده میشوند.



دستور 3 : در اینجا توسط یکی از توابع API به اسم ()GetSystemMetrics (در ادامه جزئیات این تابع بازگو میشود) عرض کل صفحه نمایش را به دست میاوریم و در متغیر مورد نظر میریزیم.



دستور 4 : در اینجا توسط یکی از توابع API به اسم ()GetSystemMetrics (در ادامه جزئیات این تابع بازگو میشود) طول کل صفحه نمایش را به دست میاوریم و در متغیر مورد نظر میریزیم.


شرح پارامتر ورودی تابع ()GetSystemMetrics :

الگوی تابع : ( int WINAPI GetSystemMetrics(int nIndex

nIndex : این پارامتر ورودی میتواند مقادیر ثابت زیادی را بپذیرد و در عوض مقادیری از نوع صحیح (int) را بر میگرداند. من دو ثابت زیر را مورد استفاده قرار دادم و دو متغیر مورد نظر را مقداردهی کردم. از نوع صحیح(int)

SM_CXSCREEN : این ثابت عرض صفحه نمایش را بر حسب پیکسل(Pixel) بر میگرداند.(معادل عددی : 0 )

SM_CYSCREEN : این ثابت طول صفحه نمایش را بر حسب پیکسل(Pixel) بر میگرداند.(معادل عددی : 1 )



دستور 5 : در این دستور ما عرض کل صفحه نمایش را نصف کرده و از نصف عرض پنجره گرافیکی کم میکنیم تا موقعیت عرضی(X) پنجره گرافیکی را در صفحه نمایش به دست بیاوریم و در متغیر مورد نظر میریزیم.



دستور 6 : در این دستور ما طول کل صفحه نمایش را نصف کرده و از نصف طول پنجره گرافیکی کم میکنیم تا موقعیت طولی(Y) پنجره گرافیکی را در صفحه نمایش به دست بیاوریم و در متغیر مورد نظر میریزیم.(توجه : همان طور که می بینید مقدار 15 از فرمول کم شده که این نیز مقدار نصف طول قسمت عنوان پنجره گرافیکی است، در Win 7 ,Win XP و...)



دستور 7 : در اینجا دو پارامتر left و top تابع ()initwindow (این تابع به طور کامل در قسمت دوم این تاپیک شرح داده شد) را با متغیرهای مشخص شده مقداردهی میکنیم تا موقعیت پنجره گرافیکی در صفحه نمایش تنظیم شود.



نتیجه ی اجرای دستورات بالا :






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


نکته : تصاویر آپلود شده در مرورگر فایرفاکس مقداری از سایز اصلی کوچکتر نشان داده میشن به همین خاطر دوستانی که از این مرورگر استفاده میکنند برای دیدن تصاویر در اندازه اصلی باید روی آنها کلیک راست کرده و گزینه View Image را انتخاب کنند.

موفق و پیروز باشید دوستان

توجه : هر گونه کپی برداری از این تاپیک و مطالب آموزشی آن تنها با درج نام سایت www.centralclubs.com مجاز است. با تشکر فراوان از شما
.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
behrad90, amir_198190, nima-rad, TDCC, abbas.m.k, Mahdi1944, FARSHAD.ADL, ARafiee, CAPTAIN PILOT, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » شنبه 14 مرداد 1391 20:30

بسم الله الرحمن الرحیم

با عرض سلام خدمت شما دوستان گرامی، نماز و روزهاتون مورد قبول حق تعالی

با بخش هفتم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. در این بخش و بخش های بعدی قصد داریم کار با تصاویر و پردازش آن ها را شروع کنیم(برای پردازش تخصصی و حرفه ای تصاویر دیجیتال، یادگیری نرم افزار Matrix laboratory) MATLAB) توصیه میشود). در این قسمت روش نمایش تصویر از منبعی خارجی(Load) و انداختن متنی بر روی آن(Edit) و ذخیره(Save) تغییرات اعمال شده آن بر روی حافظه جانبی(Hard Disk) را میاموزیم.


خب برای شروع کامپایلر مورد نظر که در بخش های قبل درباره اش صحبت کردیم را اجرا کرده و فایل پروژه را باز کنید.(برای اطلاعات بیشتر رجوع شود به بخش های قبل)

شرح دو تابع ()readimagefile و ()writeimagefile همراه با مثال :





توضیحات دستورات بالا :

دستور 1 : از تابع ()readimagefile برای نمایش عکس در موقعیتی مشخص در پنجره گرافیکی(Viewport) استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void readimagefile(const char* filename=NULL ,int left=0 ,int top=0 ,int right=INT_MAX ,int bottom=INT_MAX

filename : مسیر دقیق و فرمت تصویر مورد نظر باید در این پارامتر بین " " ذکر شود، توجه این پارامتر ثابت است و شما نمیتوانید زمانی که برنامه در حال اجراست آن را تغییر دهید. از نوع کارکتری با تخصیص حافظه بشکل پویا (char)

left : موقعیت عرضی نقطه شروع به رسم اولین پیکسل از تصویر مورد نظر واقع در گوشه ی بالا و سمت چپ تصویر را مشخص میکند. از نوع صحیح(int)

top : موقعیت طولی نقطه شروع به رسم اولین پیکسل از تصویر مورد نظر واقع در گوشه ی بالا و سمت چپ تصویر را مشخص میکند. از نوع صحیح(int)

right : موقعیت عرضی نقطه پایان رسم آخرین پیکسل از تصویر مورد نظر واقع در گوشه ی پایین و سمت راست تصویر را مشخص میکند. از نوع صحیح(int)

bottom : موقعیت طولی نقطه پایان رسم آخرین پیکسل از تصویر مورد نظر واقع در گوشه ی پایین و سمت راست تصویر را مشخص میکند. از نوع صحیح(int)


دستور 2 : از تابع ()setbkcolor جهت تعیین رنگ زمینه پنجره گرافیکی(Viewport) استفاده میشود ولی این تابع فقط در روش DOS Box به طور صحیح کار میکند، در اینجا جهت تعیین زمینه متن مورد نظر از این تابع استفاده کردیم. پارامتر ورودی این تابع به شرح زیر است :

( void setbkcolor(int color

color : از این پارامتر جهت تعیین رنگ استفاده میشود. از نوع صحیح (int)


- توابع قسمت نقطه چین در بخش های قبلی به طور کامل توضیح داده شد.



دستور 3 : از تابع ()writeimagefile برای ذخیره سازی محدوده ای مشخص از پنجره گرافیکی(Viewport) استفاده میشود که پارامترهای ورودی آن به شرح زیر است :

( void writeimagefile(const char* filename=NULL ,int left=0 ,int top=0 ,int right=INT_MAX ,int bottom=INT_MAX ,bool active=true ,HWND hwnd=NULL

filename : مسیر دقیق و فرمت تصویر جدید باید در این پارامتر ذکر شود، توجه این پارامتر ثابت است و شما نمیتوانید زمانی که برنامه در حال اجراست آن را تغییر دهید. از نوع کارکتری با تخصیص حافظه بشکل پویا (char)

left : موقعیت عرضی نقطه شروع به ذخیره سازی اولین پیکسل واقع در گوشه ی بالا و سمت چپ محدوده مورد نظر از پنجره گرافیکی را مشخص میکند. از نوع صحیح(int)

top : موقعیت طولی نقطه شروع به ذخیره سازی اولین پیکسل واقع در گوشه ی بالا و سمت چپ محدوده مورد نظر از پنجره گرافیکی را مشخص میکند. از نوع صحیح(int)

right : موقعیت عرضی نقطه پایان ذخیره سازی آخرین پیکسل واقع در گوشه ی پایین و سمت راست محدوده مورد نظر از پنجره گرافیکی را مشخص میکند. از نوع صحیح(int)

bottom : موقعیت طولی نقطه پایان ذخیره سازی آخرین پیکسل واقع در گوشه ی پایین و سمت راست محدوده مورد نظر از پنجره گرافیکی را مشخص میکند. از نوع صحیح(int)

active : این پارامتر کاربردی ندارد.

hwnd : توسط این پارامتر شما میتوانید یک پنجره Save dialog box را به این تابع متصل کنید و توسط این پنجره تنظیمات عکس را انجام داده سپس آن را بر روی حافظه ی جانبی ذخیره کنید. برای این کار نیاز است اشاره گر Save dialog box را قبلا ساخته و مقداردهی کرده اید را در اینجا فرا بخوانید.(توجه ما از این پارامتر صرف نظر میکنیم زیرا برای استفاده از این پارامتر نیاز به دانش API است که خارج از بحث این تاپیک است. نوع HWND چهار بایت فضاء اشغال میکند و برابر است با نوع long)


نتیجه ی اجرای دستورات بالا : (توجه شما میتوانید تصویر جدید ذخیره شده توسط تابع ()writeimagefile را در مسیر مورد نظر مشاهده کنید در ضمن تصویر استفاده شده در این آموزش را میتوانید از  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  دریافت کنید)





دوستان این قسمت به پایان رسید، امیدوارم از این آموزش لذت برده باشید. ادامه آموزش ها در آینده نه چندان دور.


موفق و پیروز باشید دوستان   


توجه : هر گونه کپی برداری از این تاپیک و مطالب آموزشی آن تنها با درج نام سایت www.centralclubs.com مجاز است. با تشکر فراوان از شما.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

alireza9 از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
abbas.m.k, ali-j, nima-rad, TDCC, Mahdi1944, behrad90, FARSHAD.ADL, ARafiee, CAPTAIN PILOT, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » شنبه 14 مرداد 1391 23:30

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

روند آموزش ها در این تاپیک از این به بعد بصورت زیر خواهد بود :

بخش هشتم شامل : ریختن اطلاعات یک تصویر در یک ماتریس (آرایه دو بعدی) به اسم Pixels و وارونه کردن تصویر در جهت های افقی (Flip Horizontal) و عمودی ( Flip Vertical).

بخش نهم شامل : کار با کانال های رنگ RGB و ساخت Filter سیاه و سفید کردن تصویر با استفاده ماتریس Pixels و حلقه های For.

بخش دهم شامل : ساخت Filter معکوس کردن (Invert) رنگ تصویر.

بخش یازدهم : ساخت Filter انداختن موج (Wave) بر روی تصویر.

و انشاءالله اگر فرصت شد Filter ها و تکنیک های دیگری را نیز بیان میکنیم و همچنین کار با رویدادها (Events) مربوط به ماوس و صفحه کلید و طریقه ساختن پویانمایی (Animation) ساده دو بعدی را آموزش خواهیم داد.

توجه : دلیل کوتاه شدن آموزش ها به این خاطر است که کار بر روی تصاویر زمان گیر و حوصله بر است. به همین خاطر باید مرحله به مرحله جلو برویم تا از شلوغی و ازدحام در آموزش ها جلوگیری شود.
با تشکر فراوان از صبوری شما عزیران

امیرالمومنین(ع) : زکات علم و دانش، نشر و یاد دادن آن به دیگران و تلاش برای عمل به آن است.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

alireza9 از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
abbas.m.k, ali-j, nima-rad, ghazal**, Mahdi1944, mayarahimi, behrad90, TDCC, FARSHAD.ADL, ARafiee, CAPTAIN PILOT, holamundo

Captain I

Captain I



نماد کاربر
پست ها

203

تشکر کرده: 10 مرتبه
تشکر شده: 43 مرتبه
تاريخ عضويت

يکشنبه 31 مرداد 1389 12:47

آرشيو سپاس: 1541 مرتبه در 194 پست

Re: آموزش گرافیک با استفاده از کتابخانه Graphics.h در زبان +

توسط MISSILE » پنج شنبه 19 مرداد 1391 16:01

بسم الله الرحمن الرحیم

با عرض سلام خدمت شما دوستان عزیز و بزرگوار، طاعات و عبادات شما مورد قبول حق تعالی

با بخش هشتم از آموزش گرافیک کامپیوتری در زبان برنامه نویسی ++C در خدمتتون هستم. همان طور که گفته شد در این بخش طریقه ریختن اطلاعات یک تصویر در یک ماتریس (آرایه دو بعدی) به اسم Pixels و وارونه کردن تصویر در جهت های افقی (Flip Horizontal) و عمودی (Flip Vertical) را خواهیم آموخت.

از دیر قرار گرفتن آموزش ها در این تاپیک عذر خواهی میکنم.

در حال بررسی بخش C Base Programming بودم که متوجه کامنت مدیریت محترم سایت شدم که به نکته مهمی اشاره کرده بودند این نکته استفاده از تَگ CODE هستش که کار بنده را در قسمت نوشتن کد برنامه ها آسان میکند، به خاطر این کامنت و تذکر مدیریت سایت از ایشان تشکر فراوان میکنم.

خوب بریم سراغ کد برنامه و توضیحات آن :

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

توضیحات دستورات بالا :


دستور اول : الگوی تابع ()GetImage است، توجه تنها پارامتر ورودی این تابع با مقدار پیش فرض 0 مقداردهی شده است.(برای این که بتوانیم تابع مورد نظر خود را زیر تابع ()main بنویسیم باید الگوی آن را بالای تابع ()main فرا بخوانیم)


دستور دوم : الگوی تابع ()Flip است.


دستور سوم : در این دستور یک ماتریس (آرایه دو بعدی) از نوع صحیح (int) بنام Pixels جهت ذخیره سازی کد رنگ RGB پیکسل های تصویر تعریف میکنیم که دارای 80601 سطر و 3 ستون است. برای بدست آوردن تعداد سطرهای ماتریس باید از این فرمول استفاده کنید : (طول تصویر لود شده + 1) x (عرض تصویر لود شده + 1). تعداد ستون های این ماتریس را برابر با 3 قرار دادیم چون سه رنگ R ، G ، B داریم (این ماتریس سر جمع  241803 تا سلول دارد، توجه شما میتوانید از روش های دیگری برای تعریف این ماتریس استفاده کنید مثل تخصیص حافظه ی پویا ولی به دلیل ساده تر شدن آموزش از این روش بهره بردیم).


دستور چهارم : پارامتر دوم تابع ()ShowWindow را برابر با ثابت SW_SHOW قرار دادیم تا پنجره کنسول نمایش داده شود چون میخواهیم از طریق این کنسول تابع ()Flip را فعال کنیم (این تابع در بخش های قبلی به طور کامل توضیح داده شد).


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


دستور ششم : تابع ()GetImage را در برنامه اصلی فرا میخوانیم.


دستور هفتم : تابع ()Flip را در برنامه اصلی فرا میخوانیم.


خوب نوبت به توضیح مختصری درباره توابع میرسد (سعی کنید خودتان توابع را ردیابی (Trace) کنید و اگر جایی مشکل یا سوالی داشتید بپرسید بنده جواب میدم) :


٭ کار تابع ()GetImage به دست آوردن رنگ تَک تَک پیکسل های سازنده تصویر لود شده در موقعیت تعیین شده و تبدیل این رنگ ها به سه رنگ  R ، G ، B و ذخیره سازی موقت آن ها در ماتریس Pixels است (توجه اگر هنگام فرا خوانی این تابع در برنامه اصلی پارامتر ورودی آن را عدد 1 قرار دهید این تابع روی قسمت سمت راست پنجره گرافیکی عمل میکند).


٭ کار تابع ()Flip وارونه کردن تصویر در سه جهت افقی (Flip Horizontal) ، عمودی ( Flip Vertical) و هر دو آنها است. هر کدام از این حالت ها به ترتیب از عدد 1 تا 3 قابل دسترسی هستند به این ترتیب که هنگام اجرای برنامه پنجره کنسول از شما حالت مورد نظر را میپرسد و شما تعیین میکنید که تصویر چه حالتی پیدا کند.


نتیجه ی اجرای دستورات بالا (توجه : شما میتوانید تصویر جدید و ویرایش شده را توسط تابع ()writeimagefile که قبلا شرح داده شد دخیره کنید در ضمن تصویر استفاده شده در این آموزش را میتوانید از  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  دریافت کنید، فایل پروژه ی این آموزش را نیز میتوانید از  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  دریافت کنید با پسوند ZIP).

تصویر قبل از اعمال تغییرات :





تصویر بعد از اعمال حالت شماره 1 : (Flip Horizontal)





تصویر بعد از اعمال حالت شماره 2 : (Flip Vertical)





تصویر بعد از اعمال حالت شماره 3 : (Flip Horizontal And Flip Vertical)




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

موفق و پیروز باشید دوستان

توجه : هر گونه کپی برداری از این تاپیک و مطالب آموزشی آن تنها با درج نام سایت www.centralclubs.com به عنوان منبع مجاز است. با تشکر فراوان از شما.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب MISSILE تشکر کرده اند:
nima-rad, TDCC, abbas.m.k, Mahdi1944, ardalan_DJ_programer, hamidreza004, behrad90, zarex, FARSHAD.ADL, mah1353, ARafiee, ali-j, sijoval, CAPTAIN PILOT, mayarahimi, abdoliii

بعدي

 


  • موضوعات مشابه
    پاسخ ها
    بازديدها
    آخرين پست

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 0 مهمان