PDA

View Full Version : چگونگی کشیدن شکل توسط کاربر روی یک فرم ؟



masoodp666
چهارشنبه 18 مرداد 1385, 12:04 عصر
سلام و پاینده باشید
دوتا سوال داشتم:

1. من دارم برنامه ای می نویسم که می خوام در اون کاربر بتونه مثل اتوکد یک چند ضلعی روی یک فرم یا Label بکشه. یعنی با هر بار کلیک نقطه ی جاری گرفته بشه و با کلیک بعدی نقطه ی بعدی و یک خط هم بین دو نقطه کشیده بشه.

به عبارت ساده تر چطوری میشه وقتی کلیک شد مختصات نقطه ی کلیک شده رو بدست آورد ؟؟؟

2. همچنین اینکه چطوری میشه یک فضای بسته ایی رو که توسط کاربر کشیده شده رو تشخیص داد و جدا کرد (جهت اینکه بشه مثلا اون چند ضلعی رو رنگ کرد یا اینکه چشمک بزنه) اصلا میشه ؟!

لطفا کمکم کنید. کسی راه حلی داره ؟

ghafoori
چهارشنبه 18 مرداد 1385, 14:40 عصر
دوست عزیز برای سوال اول شما راه حل من اینست که دو متغییر و یک ارایه داشته باشید و الگوریتم ان به این صورت که دفعه اول که کاربر روی فرم کلیک می کند ادرس ان در متغییر اولی رخته شود و برای بار دوم ادرس در متغییر دوم حالا با این دو متغییر یک خط رسم کنید بعد مقدار متغییر دوم را دراولی ریخته متغییر دوم را خالی کنید حالا کاربر اگر کلیک کند دوباره مقدار را داخل
دوی ریخته و خط را رسم و سپس ادامه دهید این طوری بلافاصله بعد از هر کلیک خط رسم میشود و ارایه این خطوط که رسم میشود با ترسیم دوباره فرم پاک میشوند بنابراین تمام نقاط را در این ارایه ذخیره کنید و اگر دوباره فرم رسم شد از روی این ارایه خطوط رسم میشود
برای سوال دوم راه حل من اینه که با خطوط یک garphic path ایجاد کنید و با این path یک region حالا region یک متدی دارد که نقطهای را میگیرد و می گوید داخل region هست یا نه

masoodp666
جمعه 20 مرداد 1385, 19:24 عصر
مرسی و ممنون از جواب. :لبخندساده
راه اول راه خوبی بود و استفاده کردم. اما در مورد garphic path و region اگه امکانش هست بیشتر توضیح بدید و در صورت امکان یه کد کوچولو.
واقعا سپاسگذارم. :لبخند:

ghafoori
جمعه 20 مرداد 1385, 22:56 عصر
دوست عزیز الان فرصت توضیح ندارم این کد را بگیر ببین چیزی ازش دستگیرت میشود تا در پست بعدی برایتان توضیح دهم
4558

ghafoori
شنبه 21 مرداد 1385, 07:17 صبح
این مثال داره دو دکمه است دکمه بالایی وضعیت فرم را مشخص میکند یعنی در حالت طراحی باشد یا در حالت کلیک بطور پیش فرض روی حالت طراحی است برای کشیدن شما روی چندجا فرم کلیک کنید تا چند ضلعی برای شما رسم شود سپس با زدن کلید end path ان چند ضلعی بسته شده با رنگ قرمز پر می شود و شما می توانید چند ضلعی های بیشتری بکشید وقتی روی حالت کلیک باشید اگر روی این چند ضلعیها کلیک کنید رنگ شون به ابی یا قرمز تبدیل میشود امیدوارم مثال خوبی باشد

masoodp666
شنبه 21 مرداد 1385, 12:00 عصر
ایده بسیار عالی و خوبی بود.
خیلی استفاده کردم.
Mer30 :kaf: