مشاهده نسخه کامل
: سوال در مورد برنامه نویسی گرافیکی با vb6
mohaddeseh87
30-03-2013, 13:57
سلام دوستان
سال نوتون مبارک،:n20:
انشا،الله سال خوبی پیش رو داشته باشین.
لطفا اگر با برنامه نویسی گرافیکی در vb6 آشنایی دارید،کمکم کنید تا از پس حل یه تکلیف نوروزی بر بیام.:n27:
استاد درس گرافیک کامپیوتریمون گفته یه شش ضلعی با تمام قطرهاش با دستورات functionو line بنویسیم. من میتونم شش ضلعی رو با این دستورات رسم کنم ، اما نتونستم برنامه ای بنویسم که بتونه قطرهاشو هم خودش رسم کنه!:n13:
آخه گفته برنامه خودش باید بتونه قطرها رو رسم کنه ، نه اینکه قطرها رو تک تک با دستور line بنویسیم.
لطفا اگه نظری دارید زودتر برام بنویسید، چونکه برای تحویلش فقط تا 14 ام وقت دارم.ممنون:n16:
سلام...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*******************
یه پروژه جدید درست کنید و کد های زیر رو داخلش قرار بدید...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***********************
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
**********************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
mohaddeseh87
02-04-2013, 16:31
سلام n00b
بسیار بسیار متشکرم ، خیلی ممنون.:n16:
میشه لطفا در مورد کدها یکم توضیح بدید.
در ضمن استادمون با function خواسته ، لطفا در این مورد راهنماییم کنید که چجوری این دستورات رو در function وارد کنم.
خواهش میشه...//// فقط من منظورتون رو از Function نفهمیدم.../// ببینید این برنامه چه طوره؟؟.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*******************
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
***********************
توضیحات رو آخر پست براتون ضمیمه کردم..//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************************************************** **
تو رویداد Form_Load مقدار خاصیت AutoRedraw رو برابر False و ScaleMode رو برابر 3 یا همون Pixel قرار دادیم.../// اینا برای رسم شکل لازمه...////
یه تابع DrawHexagram تعریف کردیم و کد های مربوط به رسم شکل رو داخلش قرار دادیم و این تابع رو تو Form_Paint فراخوانی کردیم تا با هر بار رسم شدن پنجره// شکل refresh بشه...///
روش رسم به این صورته:
دو تا حلقه وجود داره که یکی 6 بار و یکی 3 بار داخل حلقه ی قبلی اجرا میشه../// حلقه اول رئوس شش ضلعی رو مشخص می کنه و حلقه دومی مربوط میشه به رسم قطرها و اضلاع شش ضلعی.../// خطوط شکل...//
برای رسم از تابع Line استفاده کردیم که روش استفاده ازش به این صورته " (Line(x1,y1)-(x2,y2 " .../// این تابع یک خط از نقطه (x1,y1) به نقطه (x2,y2) رسم می کنه../// به مقادیر x1 y1 x2 و y2 توجه کنید...///
بقیه کد ها هم که دیگه مربوط میشه به ریاضیات و مثلثات و یکم پیچیدست.../// اگه خواستید بگید تا دربارش توضیح بدم../// عدد 1.0471 برابر تقسیم عدد پی به 3 هستش که یعنی همون 60 درجه البته به رادیان...///
و 60 درجه هم حاصل تقسیم 360 بر 6 ه.../// اگه یه دایره رسم کنید../// و داخلش یه شش ضلعی منتظم../// رئوس با فاصله ی 60 درجه از هم قرار می گیرن....////
موفق باشید!
mohaddeseh87
03-04-2013, 08:44
بازم ممنون، کمک خیلی بزرگی کردید.:n16:
فکر کنم این همون چیزی که استادمون ازمون میخواد.
فقط لطفا درمورد قسمت ریاضیاتش برام توضیح بدید. فکر کنم اگه یه مرحله اجراشدن رو ( i=0 و j=0 ) برام توضیح بدید،بقیه اش رو متوجه بشم.
در ضمن لطفا بگید این scalewidth دقیقا چه خاصیتی ؟ و چرا اونو تقسیم بر اعداد 2و3 میکنید؟
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دو تا حلقه وجود داره که یکی 6 بار به تعداد رئوس و یکی 3 بار اجرا میشه.../// همون طور که گفتم حلقه اول رئوس رو مشخص می کنه// و حلقه دوم مربوط میشه به رسم خطوط شکل// یعنی ضلع ها و قطر ها...///
روش رسم به این صورته.../// اگه شما یه دایره رسم کنید// و یه شش ضلعی منتظم داخلش// رئوس شش ضلعی با فاصله ی 60 درجه از هم روی دایره قرار می گیرن../// 60 = 360/6...//
پس برای رسم شش ضلعی باید نقاطی رو به فاصله ی 60 درجه روی یه دایره فرضی در نظر بگیریم و از این نقاط خطوطمون رو رسم کنیم...///
برای رسم دایره اول وسط فرم رو پیدا می کنیم.../// خاصیت ScaleWidth طول فرم رو به Pixel به ما میده// و اگه تقسیم بر 2 کنیمش حاصل میشه نصف طول فرم.../// مقدار ScaleHeight هم عرض فرم رو میده...///
ما یه بار دیگه مقدار این خاصیت رو تقسیم بر 3 کردیم تا شعاع دایره رو به دست بیاریم.../// شعاع دایره میشه 1/3 طول و عرض فرم// پس قطر دایره یا قطر شش ضلعی میشه 2/3 طول و عرض فرم...///
با توجه به قوانین مثلثات// کسینوس x ها رو به ما میده و سینوس y ها رو...// (به تصویر توجه کنید// توضیحش یکم مشکله...///)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای رسم دایره شعاع رو ضربدر سینوس و کسینوس زاویه مون می کنیم// تا مقدار x و y رو به دست بیاریم..///
i رأس شکل رو مشخص می کنه تو اجرای اول مقدارش صفره و میشه صفر درجه.../// تو اجرای دوم مقدارش برابر یکه که وقتی تو 1.0471 (حاصل تقسیم عدد پی بر 3 یعنی 60 درجه) ضرب بشه میشه 60 درجه../// و تو اجرای بعدی 2 که میشه 120 درجه و به همین صورت....////
اینا برای x1وy1 بود../// اما تو x2وy2 مقدار i با یه j هم جمع میشه که حاصلش رأس بعدی رو مشخص می کنه...// تو اجرای اول مقداش برابر 1 واحد بیشتر از رأسی که روش قرار دارید.../// یعنی 1 رأس جلوتر و یه خط از رأسی که روش قرار دارید به 1 رأس جلوتر رسم میکنه../// میشه ضلع شش ضلعی...///
تو اجرای دوم مقدارش میشه 2 واحد بیشتر (2 رأس جلوتر) و قطر کوچیک رو رسم می کنه و تو اجرای بعدی 3 و قطر بزرگ شش ضلعی رو رسم می کنه...///
******************
اگه بازم متوجه نشدید بگید تا بیشتر توضیح بدم.../// یکم پیچیدست این برنامه...//////// پیشنهاد می کنم که یه Breakpoint روی تابع Line بذارید و اجرا شدن کد ها رو تو هر مرحله مشاهده کنید.../// اینجوری بهتر متوجه میشید...///
کد ها رو هم اصلاح کردم.../// از کد های جدید استفاده کنید...//// حلقه ها هر کدوم یه بار اضافه اجرا میشدن...///
موفق باشید!
mohaddeseh87
04-04-2013, 19:12
خیلی پیچیده است!:n13:
کمابیش متوجه شدم .متاسفانه نحوه استفاده از متد Breakpoint را نمیدانم ، لطفا در این مورد هم مرا راهنمایی کنید.
پیشاپیش از وقتی که میگذارید ،سپاسگذارم.:»
برای گذاشتن Breakpoint روی هر خط از کد// روی فضای خالی قبل از اون کلیک کنید..//// مثل تصویر...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************************
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*****************
بعد از اجرای برنامه.../// وقتی مفسر به Breakpoint برسه اجرای برنامه متوقف میشه و می تونید با دکمه F5 یا کلیک روی دکمه Run اجرای برنامه رو ادامه بدید.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
********************
گذاشتن Breakpoint به شما تو عیب یابی برنامه کمک زیادی می کنه...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*****************************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
mohaddeseh87
05-04-2013, 22:49
ممنون از راهنمایی هاتون. کمک خیلی بزرگی کردید. :n16::n16::n16:
فقط یه سوال تخصصی دارم.
فکر و ایده حل این چنین سوالهایی رو چطوری باید پیدا کنم؟؟:n13:
با فکر کردن روی مسئله...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.