» » تغییر زاویه ی دید با حرکت ماوس در دلفی

مهرگان
 
 
 

تغییر زاویه ی دید با حرکت ماوس در دلفی

3 مرداد 1391

تغییر زاویه ی دید با حرکت ماوس در دلفی

به نام خدا


تغییر زاویه ی دید با حرکت ماوس:

1- نوع داده های زیر را در یونیت برنامه ایجاد کنید:

var

Xi, Yj, Zk: double;

MouseDown1: byte = 0;

MouseXPosition:double;

MouseYPosition:double;

2- دستورات انتساب زیر را به رویداد FormCreate اضافه کنید؛

Xi:=0; Yj:=0; Zk:=6; //برای تعیین زاویه ی دید اولیه

3- پروسیجری به نام DrawGLScene ایجاد کرده دستورات زیر را به آن اضافه کنید. سپس پروسیجر را در رویداد FormPaint صدا بزنید.(توجه داشته باشید که تمام کد های مربوط به رسم شکل، باید در همین پروسیجر نوشته شود.)

GLuLookAt (Xi, Yj, Zk, 0, 0, 0,0,1,0);

4- دستورات زیر را به رویداد FormMouseDown اضافه کنید؛

MouseDown1 := 1; MouseXPosition:=X; MouseYPosition:=Y;

5- دستورات زیر را به رویداد FormMouseMove اضافه کنید؛

if(MouseDown1=1)then

begin

Xi:=Xi- (X-MouseXPosition)/30;

Yj:=Yj- (Y-MouseYPosition)/30;

MouseXPosition:=X;

MouseYPosition:=Y;

end;

6- در رویداد FormMouseUp کد زیر را بنویسید؛

MouseDown1 := 0;

7- کد زیر را در رویداد FormMouseWheel قرار دهید؛

Zk:= Zk + WheelDelta/100;

8- توجه کنید که از ریست کردن نمایش درست استفاده کنید:

تابع ریست کننده نمایش --> GLloadidentity();

9- توجه داشته باشید که تابع تعیین زاویه دید و توابع رسم اشکال را بین دو دستور زیر بنویسید:


glPushMatrix: مکان فعلی در صفحه ی گرافیکی را در پشته ذخیره می کند

glPopMatrix: بالا ترین مختصات مکانی ذخیره شده در پشته را بر می گرداند

مثال:



glPushMatrix; //save this location to Stack //

GLuLookat(x,y,z,0,0,0, 0,0,0);

glTranslated (0, 0, 1.5);

... Drawing shape1 :

... Drawing shape2 :

... Drawing shape3 :

glPopMatrix; //Load from Saved Location //

موفق باشید

---

 
 
برای مشاهده بهتر سایت از مرورگر فایرفاکس ، اُپرا و یا گوگل کروم استفاده نمایید