نمایش نتایج 1 تا 4 از 4

نام تاپیک: هدر های لازم برای برنامه نویسی گرافیک در Visual C++‎

  1. #1
    کاربر دائمی آواتار eyelash
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران- اصفهان
    پست
    126

    هدر های لازم برای برنامه نویسی گرافیک در Visual C++‎

    با عرض سلام و وقت به خیر خدمت دوستان
    من قبلا توی turbo C برنامه نویسیس گرافیکی انجام داده بودم و مشکلی نداشتم ولی الان می خوام باVisual C++‎ برنامه نویسی گرافیکی انجام بدم.
    راستش هر چی MSDN و تاپیک های سایت را بررسی کردم چیز درست و حسابی دستگیرم نشد و نتونستم هدر های لازم که باید به برنامه معرفی بشن را پیدا کنم.
    از دوستانی که در این زمینه تجربه دارن ممنون می شم راهنمایی کنن.

  2. #2
    کاربر دائمی آواتار Arash_j13
    تاریخ عضویت
    آذر 1383
    محل زندگی
    مشهد
    پست
    114
    گرافیکی که شما کار می کردید BGI بوده وای تو ویندوز شما نتونید از اون استفاده کنید مجبورید از کتبخانه هایی مثل opengl یا directx استفاده کنید

  3. #3
    کاربر دائمی آواتار eyelash
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران- اصفهان
    پست
    126
    نقل قول نوشته شده توسط Arash_j13 مشاهده تاپیک
    گرافیکی که شما کار می کردید BGI بوده وای تو ویندوز شما نتونید از اون استفاده کنید مجبورید از کتبخانه هایی مثل opengl یا directx استفاده کنید
    می شه بیشتر توضیح بدین

  4. #4

    نقل قول: هدر های لازم برای برنامه نویسی گرافیک در Visual C++‎

    سلام
    اینم آموزش گرافیک در visual studio C++‎ 2010
    اگر با نرم افزار turbo C++‎ کار کرده باشید در آنجا برای کار با گرافیگ از یک header file به نام graphics.h استفاده می کردیم و با تغییر linker به روی graphic این قابلیت برای ما فراهم می شد.اما در visual studio 2010 و دیگر ورژن ها header file به نام graphics.h نداریم اما به جای آن می توان از open GL که به مراتب قدرتمند تر است استفاده کنیم.
    برای این کار ابتدا لازم است فایل ضمیمه را که header file لازم برای استفاده از open GL هست را دانلود کرده و در مسیرهایی که گفته خواهد شد قرار دهید.


    ابتدا فایل دانلود شده را extract کنید ودر داخل آن فایل های glut32.lib,glut32.dll,glut.h را خواهید یافت.
    فایل glut.h را در مسیری که visual studio 2010 نصب هست به پوشه زیر انتقال دهید.
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
    و فایل glut32.lib را در مسیر زیر کپی کنید.
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
    و در آخر فایل glut32.dll را در دو پوشه زیر قرار دهید.
    C:\Windows\SYSTEM
    و
    C:\Windows\system32
    حالا یکبار ویندوز خود را restart کنید تا تغییرات اعمال شود.
    حالا visual studio 2010 شما برای کار با open GL ست شده است.
    ابتدا توابع لازم برای رسم اشکال را براتون می گم:
    1-برای رسم نقطه در صفحه از دستور زیر استفاده می کنیم:
    glVertex{2,3,4}(double or int or float or short)(coordinate)
    اعداد 2و3و4 بعد های صفحه مختصات ما را مشخص می کنند که در حالت 4 پارمتر 4 میزان بزرگنمایی راس را مشخص می کند. و double,int,float,short نوع مختصات ما را مشخص می کنند با یک مثال ساده درک این موضوع را واستون راحت می کنم:
    glVertex2i(5,-4); -1
    glVertex3f(0.5,2,-1.25); -2
    glVertex4d(1.25,2.75,-8,4);-3
    در مثال شماره یک نقطه مورد نظر ما در فضای دو بعدی که مختصات نقطه مورد نظر ما از نوع int هست.
    در مثال شماره دو نقطه مورد نظر ما در فضای سه بعدی که مختصات نقطه مورد نظر ما از نوع float هست.
    در مثال شماره سه نقطه مورد نظر ما در فضای سه بعدی با پارامتر بزرگنمایی که مختصات نقطه مورد نظر ما از نوع double هست.
    2-برای رسم یک خط ما نیاز به مختصات دو نقطه داریم که به صورت زیر تعریف می شود:
    ما می توانیم سه نوع خط رسم کنیم:
    1-رسمپارهخطهایجداازهم(GL_LINES)
    2-رسم پاره خط های به هم پیوسته با 2 سر انتها باز (GL_LINE_STRIP)
    3-رسم پاره خط های به هم پیوسته با 2 انتها بسته (GL_LINE_LOOP)
    اکنون برای هر کدام مثالی می آورم:
    glBegin(GL_LINES);
    glVertex2f(-0.2, -0.5);
    glVertex2f(0.3, 0.8);
    glVertex2f(-0.8, -0.8);
    glVertex2f(0.8, -0.8);
    glEnd();
    نکته: هر تابعی که ما در open GL استفاده می کنیم بین دو دستور glBegin(type of function) وglEnd() قرار می گیرند.
    در مثال بالا دو خط جدا از هم خواهیم داشت.
    glBegin(GL_LINE_STRIP);
    glVertex2f(-0.2, -0.5);
    glVertex2f(0.3, 0.8);
    glVertex2f(0.4, 0.1);
    glVertex2f(-0.8, 0.0);
    glEnd();
    درمثال بالا ما دوخط داریم که از ابتدا به هم وصل شده اند.
    glBegin(GL_LINE_LOOP);
    glVertex2f(-0.2, -0.5);
    glVertex2f(0.3, 0.8);
    glVertex2f(0.4, 0.1);
    glVertex2f(-0.8, 0.0);
    glEnd();
    در مثال آخر نیز ما دو خط داریم که از هر دو طرف به هم وصل شده اند.
    برای ایجاد ضخامت در خط از دستور زیر استفاده می کنیم:
    glLineWidth(float);
    برای دادن رنگ به خط یا نقطه از دستور زیر استفاده می کنیم:
    glColor3f(2.0,0.0,2.0);//or glColor4f(2.0,0.0,2.0,0.2) 4th parameter for transparencyoption
    رسم مثلث با استفاده از open GL:
    برای رسم یک مثلث نیاز به داشتن مختصات سه نقطه داریم.
    انواع مثاث های قابل ترسیم:
    1- مثلثهایجداازهم
    2- مثلثهایدو به دومشترکدریکضلع
    3- مثلثهایمشترکدریکراسواحد
    برای ترسیم مثلث نوع اول به شکل زیر عمل می کنیم:
    glBegin(GL_TRIANGLES);
    glVertex2f(-0.8, -0.8);
    glVertex2f(-0.6, -0.4);
    glVertex2f(-0.3, -0.8);
    glVertex2f(0.8, 0.8);
    glVertex2f(0.6, 0.4);
    glVertex2f(0.3, 0.8);
    glVertex2f(-0.4, 0.0);
    glVertex2f(0.0, 0.5);
    glVertex2f(0.4, 0.0);
    glEnd();
    که در مثال بالا سه مثلث جدا از هم را نشان می دهد.
    برای ترسیم مثلث نوع دوم به شکل زیر عمل خواهیم کرد:
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glBegin(GL_TRIANGLE_STRIP);
    glVertex2f(-0.4, -0.5);
    glVertex2f(-0.4, -0.1);
    glVertex2f(0.0, -0.5);
    glVertex2f(0.0, -0.1);
    glVertex2f(0.4, -0.5);
    glEnd();
    در مثال بالا سه مثلث داریم که دو به دو دارای ضلع مشترک هستند برای اینکه جدا از هم تشخیص داده شوند از دستور glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); استفاده کردیم.
    برای ترسیم مثلثهای مشترک در یک راس از دستورات زیر استفاده می کنیم:
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glBegin(GL_TRIANGLE_FAN);
    glVertex2f(-0.0, 0.0);
    glVertex2f(-0.7, 0.0);
    glVertex2f(-0.7, 0.7);
    glVertex2f(0.0, 0.7);
    glVertex2f(0.7, 0.7);
    glVertex2f(0.7, 0.0);
    glVertex2f(0.7, -0.7);
    glVertex2f(0.0, -0.7);
    glVertex2f(-0.7, -0.7);
    glEnd();
    که در مثال بالا هفت مثلث را نشان می دهد که در یک راس مشترک هستند.
    یک مثال را به طور کامل برایتان توضیح می دم.
    رسم مثال قبل :
    include<glut.h>
    #pragma comment(lib,"glut32.lib")
    #pragma comment(lib,"opengl32.lib")
    int width=480,hight=640;
    void display(void)/* all of our code that need to see in screen should write in this function and between glClear(GL_color_BUFFER_BIT) and glutSwapBuffers()*/
    {
    glClear(GL_COLOR_BUFFER_BIT);
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glColor3f(2.0,0.0,2.0);//or glColor4f(2.0,0.0,2.0,0.2) 4th parameter for transparencyoption
    glBegin(GL_TRIANGLE_FAN);
    glVertex2f(-0.0, 0.0);
    glVertex2f(-0.7, 0.0);
    glVertex2f(-0.7, 0.7);
    glVertex2f(0.0, 0.7);
    glVertex2f(0.7, 0.7);
    glVertex2f(0.7, 0.0);
    glVertex2f(0.7, -0.7);
    glVertex2f(0.0, -0.7);
    glVertex2f(-0.7, -0.7);
    glEnd();
    glutSwapBuffers();
    }
    int main(int argc,char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE);
    glutInitWindowSize(width, hight);// the resolution of screen
    glutCreateWindow("Hello OpenGL World");//name of screen
    glutDisplayFunc(display);// go to display function
    glutMainLoop();
    }
    رسم چند ضلعی(GL_POLYGON):
    با استفاده از ویژگی چند ضلعی ها می توان انواع چند ضلعی ها را رسم کرد.مثلث ها نیز در واقع از چند ضلعی ها مشتق گرفته شده اند، اما به دلیل اینکه مثلث ها دارای تنوع سه گانه جالبی هستند و همواره محدب هستند و رئوس یک مثلث نمی توانند یک دیگر را قطع کنند، برای رسم مثلث هرگز از چند ضلعی استفاده نمی شود. بنابراین برای رسم چند ضلعی های بیشتر از 4 راس از این شیوه استفاده می کنند.
    چند ضلعی ها به طور پیش فرض توپر رسم می شوند اما با دستور زیر می توان تغییراتی را اعمال کرد:
    glPolygonMode(GLenum face,GLenum mode);
    آرگومانی که به پارامتر face ارسال می شود می تواند به صورت GL_BACK,GL_FRONT,GL_FRONT_AND_BACK باشد.که نحوه تاثیر پارامتر mode بر چند ضلعی را مشخص می کند که این مباحث تاثیر خود را بیشتر در فضای 3بعدی که در قسمتهای بعد توضیح داده خواهد شد نمایان می کنند اما لازم به ذکر است که در فضای 3بعدی اشکال دارای سه قسمت جلو،کناره و پشت هستند که می توانیم آنها را ببینیم و هر کدام ازین قسمت ها می توانند توپر یا توخالی باشند.پارامتر mode می تواند 3 مقدار GL_LINE,GL_POINT,GL_FILL را بگیرد که در آن GL_FILLبه معنای رسم توپر شکل،GL_POINT باعث رسم نقاط ابتدایی وانتهایی خطوط نمایش داده می شود ودر آخر GL_LINE که باعث می شود تنها خطوط متصل به هم دیده شوند(حالت تو خالی).
    با یک مثال درک طلب را ساده تر می کنم:
    در مثال زیر یک هشت ضلعی به صورت تو خالی رسم شده است:
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glBegin(GL_POLYGON);
    glVertex2f(-0.7, -0.4);
    glVertex2f(-0.7, 0.4);
    glVertex2f(-0.4, 0.7);
    glVertex2f(0.4, 0.7);
    glVertex2f(0.7, 0.4);
    glVertex2f(0.7, -0.4);
    glVertex2f(0.4, -0.7);
    glVertex2f(-0.4, -0.7);
    glEnd();
    رسم 4 ضلعی :
    برای رسم 4 ضلعی نیز با دو نوع مختلف روبه رو هستیم:
    1- 4ضلعی های جدا از هم((GL_QUADS
    2- 4ضلعی های به هم پیوسته (GL_QUAD_STRIP)
    برای رسم 4ضلعی جدا از هم کافیست که 4 راس را به OPEN GL دهیم تا برای ما یک 4 ضلعی به شکل مربع یا مستطیل یا لوزی یا هر 4 ضلهی دیگر را رسم کند.
    در مثال زیر یک لوزی ویک متوازی الاضلاع توپر کشیده شده است:
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glBegin(GL_QUADS);
    glVertex2f(-0.8, 0);
    glVertex2f(-0.4, 0.4);
    glVertex2f(0.0, 0.0);
    glVertex2f(-0.4, -0.4);
    glVertex2f(0.9, 0.5);
    glVertex2f(0.2, 0.5);
    glVertex2f(0.1, 0.0);
    glVertex2f(0.8, 0.0);
    glEnd();
    برای رسم 4 ضلعی های به هم پیوسته باید دقت بیشتری به کاردهیم. ابتدا 4 راس 4ضلعی اصلی را می نویسیم دقت می کنیم که 4ضلعی بعدی برروی آخرین ضلع 4ضلعی قبلی رسم می شود ترتیب نوشتن رئوس در این نوع بسیار مهم است.
    برای مثال در کد زیر 3 مستطیل به هم پیوسته را کشیده ایم:
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glBegin(GL_QUAD_STRIP);
    glVertex2f(-0.8, 0.4);
    glVertex2f(-0.8, -0.4);
    glVertex2f(0.0, 0.4);
    glVertex2f(0.0, -0.4);
    glVertex2f(0.2, 0.4);
    glVertex2f(0.2, -0.4);
    glVertex2f(0.5, 0.4);
    glVertex2f(0.5, -0.4);
    glEnd();
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. سوال در مورد تفاوت ها Visual Studio 2005 و Visual Studio .NET
    نوشته شده توسط ali_googerdy در بخش C#‎‎
    پاسخ: 3
    آخرین پست: جمعه 10 مهر 1388, 15:53 عصر
  2. A Visual Studio Add-In That Converts C#‎ Code To Visual Basic
    نوشته شده توسط HO457 در بخش VB.NET
    پاسخ: 4
    آخرین پست: چهارشنبه 09 فروردین 1385, 21:29 عصر
  3. تبدیل پروژه Visual studio 2003به Visual studio2005
    نوشته شده توسط jannati در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 04 دی 1384, 10:14 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •