ورود

View Full Version : سوال: ساخت پاکن لطفا کمک کنید!



ahmadi3d_ali
یک شنبه 27 تیر 1389, 17:47 عصر
با سلام
همه با ms paint کار کردین!
من یه برنامه ساختم شبیه ms paint
می خوام براش یه پاکن بسازم لطف در این باره کمک کنید!
ایده خود من اینه که وفتی طرف کلیک می کنه یه Circle دست بشه ! بعد توی circle با Floodfill سفید بشه ! بعد خود circle پاک بشه!
ولی من نمی دونم این circle که می خوام بسازم را بعد سفید کرذن داخلش چطور پاکش کنم آیا باید
مختصات pixle ها را در یه آرایه زخیره و بعد پاک کنم یا به شکل ساده تر ی هم میشه !
ممنون

مصطفی ساتکی
یک شنبه 27 تیر 1389, 18:29 عصر
اگر فقط ميخاي پاك كن اون onmousemove مختصات رو داري يه radius براي پاك كن در نظر بگير .canvas.brush.style رو bssolid و canvas.brush.color رو به clwhite تنظيم كن. حالا
Canvas.ellipse(x-Radius,y-Radius,x+Radius,y+Radius) رو بنويس اين ميشه اون پاكني شما ميخاي

ahmadi3d_ali
یک شنبه 27 تیر 1389, 21:25 عصر
اگر فقط ميخاي پاك كن اون onmousemove مختصات رو داري يه radius براي پاك كن در نظر بگير .canvas.brush.style رو bssolid و canvas.brush.color رو به clwhite تنظيم كن. حالا
Canvas.ellipse(x-Radius,y-Radius,x+Radius,y+Radius) رو بنويس اين ميشه اون پاكني شما ميخاي


سلام
یه مشکل ینطوری که هی on mouse move اجرا میشه 100 elpis میسازه!!!
تازه من می خواستم از بین بره! بعد از 1 بر کاشته شدن یعنی اصلا کاشته نشه یه جسم باشه که دنبال x,y موس بیاد!!!
ولی من نمی دونم چطور این را حرکت بدم
ببین برای نمونه ms paint !!
ممنون!

Felony
یک شنبه 27 تیر 1389, 21:38 عصر
یک کنترل Shape روی فرمت بزار و Visbleش رو False کن ، موقع نیاز True من و در onMouseMove فرم جا به جاش کن و بسته به مختصات X,Y,Height,Width پاک کن رو پیاده سازی کن .

ahmadi3d_ali
یک شنبه 27 تیر 1389, 21:40 عصر
یک کنترل Shape روی فرمت بزار و Visbleش رو False کن ، موقع نیاز True من و در onMouseMove فرم جا به جاش کن و بسته به مختصات X,Y,Height,Width پاک کن رو پیاده سازی کن .

پاکنش را با همون روش قبل بسازم یا با floodfill ?!
ممنون

مصطفی ساتکی
دوشنبه 28 تیر 1389, 06:22 صبح
تازه من می خواستم از بین بره! بعد از 1 بر کاشته شدن یعنی اصلا کاشته نشه یه جسم باشه که دنبال x,y موس بیاد!!!
ولی من نمی دونم چطور این را حرکت بدم
اون دايره كه حركت مي كنه رو background مورد نظر xor كن.مثل فتوشاپ

ahmadi3d_ali
چهارشنبه 30 تیر 1389, 17:22 عصر
اون دايره كه حركت مي كنه رو background مورد نظر xor كن.مثل فتوشاپ

ببین من دیدم کاری که این دوستمون گفت راحت تره یعنی یه shape کاشتم که دنبال mouse می ره!
و visible و یقیه ی چیز هشو درست کردم فقط چطور بگم اون حجمی که زیر shape هست پاک بشه!!!
یعین چطور مساحت و مختصات که باید رنگ بشه را پیدا کنم!

Felony
چهارشنبه 30 تیر 1389, 17:59 عصر
به وسیله متدهای Top , Left , Height , Width شئ Shape مورد نظر .

ahmadi3d_ali
چهارشنبه 30 تیر 1389, 18:19 عصر
به وسیله متدهای Top , Left , Height , Width شئ Shape مورد نظر .

بابا من هم می دونم بوسیله ی کدوم متد!!!!!!!!!!
می خوام یه فرمول ریاضی بدید که اون مساحت shape را در بیارم! و زیرش رنگ بشه!!!
فرمول!!^

ahmadi3d_ali
چهارشنبه 30 تیر 1389, 18:30 عصر
ببینید !! هر کدوم هی میاد یه چیزی می گید و اصلا به جواب هم نمی رسیم!!
برای همین من قشنگ توضیح می دم چه مشکلی دارم چی می خوام!
ببینید خوب الان کاربر پاک کن را انتخاب کرد! کلیک کرد روی صفحه!
1- یه x دارم یه y که مال on key down هست ! و اینکه این x , y مرکز shape هم هست! در نتیجه on key down مال Shape هست نه Form! یا image !
این شد اولین مشکل!
2- اینکه حالا فرض می گیرم x,y کلیک شده مال image هست حالا من چطور با استفاده از متد floodfill بگم که از اون نقطه شروع کن به اندازه ی یه دایره ی Shape رنگ سفید بزن!!
من خودم فکر می کنم باید حول محور x,y یه دایره با شعاع Shape بزنم! بعدش توش رنگی بشه!
خوب اینجا یه مشکل هست اینکه حالا اومد و طرف mouse را روی صفحه کشید!! حالا دیگه اون قضیه کار نمی کنه!
پس من یه راه می خوام که دقیقا وقتی on key down اجرا میشه! اون قسمتی که shape تسخیر کرده رنگ سفید بخوره و همچنین وقتی تو همون حالت on mouse move میشه قاطی نکنه!!! و باز هم به کارش ادمه بده!
جان من داستان تخیلی نگید یه الگوریتم بدید به من!
منظورم اینه که حرفاتون با هم تناقض داره! میدونم 1000 روش وجود داره ولی شما سعی کنید اگه کسی نظری داده نظرش را نکمیل کنید و در کل رو یک موضوم focus بدید! یا اگر هم نظر بهتری دارید کامل توضیح بدید!
ممنون از همه ی دوستان!

مصطفی ساتکی
چهارشنبه 30 تیر 1389, 19:39 عصر
منظورم اینه که حرفاتون با هم تناقض داره! میدونم 1000 روش وجود داره ولی شما سعی کنید اگه کسی نظری داده نظرش را نکمیل کنید و در کل رو یک موضوم focus بدید! یا اگر هم نظر بهتری دارید کامل توضیح بدید!
ببخشيد اينطوي رك ميگم .به بچه 7 ساله همون چند كلمه رو گفته بودم تا الان تمومش كرده بود.به جاي اين حرفاي قشنگ تمركزتونو بزاريد رو كد نويسي .ديگران هيچ مسئوليتي در قبال بازي با كامپيوتر شما ندارد.

ahmadi3d_ali
چهارشنبه 30 تیر 1389, 19:46 عصر
ببخشيد اينطوي رك ميگم .به بچه 7 ساله همون چند كلمه رو گفته بودم تا الان تمومش كرده بود.به جاي اين حرفاي قشنگ تمركزتونو بزاريد رو كد نويسي .ديگران هيچ مسئوليتي در قبال بازي با كامپيوتر شما ندارد.


شما گفته بودید
اون دايره كه حركت مي كنه رو background مورد نظر xor كن.مثل فتوشاپ
من این متد Xor را نمیشناسم اصلا چی کار میکنه!
اگه یه مقدار توضیح بدید خوب میشه!
در ضمن ببخشید اگه خستون کردم
:خجالت:

مصطفی ساتکی
چهارشنبه 30 تیر 1389, 21:14 عصر
دوست عزيز وقتي ميخاي گرافيك كار كني يا با GDI بايستي كار كني يا با poinetr يا با OpenGL و DirectX.
يه چيزي رو هم كه Start ميزني با مطالعه باشه .نه اينكه در مورد كليه توابع و api دو دونه سوال بپرسي.
شما در ابتدا اصول گرافيك كه شامل كار با كلاس TCanvas و api گرافيك رو از MSDN مطالعه كني.كتاب مفيدي كه تا حدودي اين 2 موضوع رو پوشش بده كتاب Delphi 5 Developer’s Guide By Xavier Pacheco and Steve Teixeira كه فصل 8 رو شما بخونيد.اگر بتونيد كل اين كتاب رو هم مطالعه كنيد تو همه زمينه مي تونه واستون مفيد باشه.
سطح بعدي كه بيشتر به كار تو حافظه تاكيد داره و مربوط به پردازش تصوير كار با Scanline و اشاره گر هاست.
و اگر قصد داريد رندر (نمايش گرافيك با سرعت بالا)بالايي داشته بايستي opengl يا directX رو ياد بگيريد كه كتابخانه هاش در دلفي قابل دسترس هستند.
شما وقتي كه مطالعه كنيد ديگه حرف اون دوست عزيز مونو قبول نمي كنيد كه مي گن يه TGraphicControl بزاريد تو صفحه اونو حركت بديد. اين كار به شدت اشتباه.سعي كنيد از ابتداي كار همه چيز اصولي ياد بگيرد.البته كلاس TgraphiControl هم كاربردهاي خودشو داره.
موفق باشيد

ahmadi3d_ali
پنج شنبه 31 تیر 1389, 19:41 عصر
دوست عزيز وقتي ميخاي گرافيك كار كني يا با GDI بايستي كار كني يا با poinetr يا با OpenGL و DirectX.
يه چيزي رو هم كه Start ميزني با مطالعه باشه .نه اينكه در مورد كليه توابع و api دو دونه سوال بپرسي.
شما در ابتدا اصول گرافيك كه شامل كار با كلاس TCanvas و api گرافيك رو از MSDN مطالعه كني.كتاب مفيدي كه تا حدودي اين 2 موضوع رو پوشش بده كتاب Delphi 5 Developer’s Guide By Xavier Pacheco and Steve Teixeira كه فصل 8 رو شما بخونيد.اگر بتونيد كل اين كتاب رو هم مطالعه كنيد تو همه زمينه مي تونه واستون مفيد باشه.
سطح بعدي كه بيشتر به كار تو حافظه تاكيد داره و مربوط به پردازش تصوير كار با Scanline و اشاره گر هاست.
و اگر قصد داريد رندر (نمايش گرافيك با سرعت بالا)بالايي داشته بايستي opengl يا directX رو ياد بگيريد كه كتابخانه هاش در دلفي قابل دسترس هستند.
شما وقتي كه مطالعه كنيد ديگه حرف اون دوست عزيز مونو قبول نمي كنيد كه مي گن يه TGraphicControl بزاريد تو صفحه اونو حركت بديد. اين كار به شدت اشتباه.سعي كنيد از ابتداي كار همه چيز اصولي ياد بگيرد.البته كلاس TgraphiControl هم كاربردهاي خودشو داره.
موفق باشيد

ممنون من از قبل چندتا کتاب خوندم ولی
در مورد گرافیک خیلی مطالعه نداشتم
سعی میکنم کتاب هایی که گفتید را بخونم
ممنون!