PDA

View Full Version : سوال: مشکل در برنامه paint



arezoo_sh
شنبه 02 آذر 1387, 14:06 عصر
در کد نویسی ابزار fill color دچاره مشکل شدم از تابع بازگشتی استفاده کردم درست عمل می کنه ولی stack پر میشه و خطا میده (حالت های تکراری رو هم در نظر نگرفتم )
اگه کسی تابعی یا روشی می تونه پیشنهاد بده ممنون می شم.....

یه اشکال دیگه در کد نویسی Brush هست که درست عمل می کنه ولی وقتی حرکت موس سریع میشه خط کشیده شده به صورت یه خط ممتد نیست ! فکر می کنک باید از do event استفاده کنم ولی بلد نیستم در این رابطه هم اگه راهنماییم کنین ممنون می شم .

shask00l
شنبه 02 آذر 1387, 20:55 عصر
ببین دوست عزیز برای پر کردن 1 شکل باید از الگوریتم flood fill استفاده کنی . راه حل بازگشتی که شما بکار بردی تا حدودی صحیحه . برای حل مشکل خانه های تکراری میتونی قبل از اینکه آدرس خونه رو به تابع fill بدی رنگشو چک کنی . البته در موارد بزرگتر مثلا رنگ کردن کل صفحه بازم مشکل stack وجود داره . برای حل اون مشکل من 1 راه حل ابداعی (دودره بازی) بکار بردم . میتونی از 1 تابع بازگشتی مدیریت شده استفاده کنی . به این صورت که . مثلا تابع ما وقتی 5000 بار خودشو فراخوانی بکنه با مشکل stack مواجه میشه .. درست ؟ حالا ما با کمک چنتا متغییر کنترلی کاری میکنیم که تابع 4000 بار بیشتر خودشو فراخوانی نکنه و وقتی به این سقف رسید . مقدار آدرس خونه بعدی رو توی 1 متغییر global بزاره و کار خودشو تموم کنه . و وقتی stack به حالت عادی برگشت . دوباره خونه ذخیره شده رو با همون تابع فراخوانی میکنیم (یعنی بجای اینکه 1 بار کل قسمتها رو رنگ بزنیم . کار رو تقسیم بندی میکنیم و در چند مرحله انجام میدیم . 4000 تا 4000 تا ) . البته این کار زیاد اصولی نیست .

اگه میتونستید از gdi استفاده کنید کارتون خیلی راحت تر بود .

در مورد مشکل حرکت ماوس هم . من قبلا با چنین مشکلی برخورد نکردم ولی میتونید از 1 راه حل خیلی ساده استفاده کنید . وقتی برنامتون اجرا میشه توی بخش تنظیمات ماوس ویندوز حساسیت ماوس رو کم کنید تا کاربر نتونه زیاد ماوسشو تکون بده .!