PDA

نسخه کامل مشاهده نسخه کامل : کنترل یک خط رسم شده



mammad*2
27-12-2008, 22:29
با سلام
چه جوری میشه به نقاط ابتدایی و انتهایی یک خط که در یک picturebox رسم شده دسترسی داشت مثلا بتوان سر خط را کشید بالا یا پایین برد؟:11:

فاطـمه
28-12-2008, 09:49
سلام فک کنم تنها راه این باشه که کل picture box رو بالا و پایین ببرین...

mammad*2
28-12-2008, 10:03
اگه کل picturebox رو بالا یا پایین ببریم کل برنامه به هم می ریزه باید راهی باشه که مثلا نقاط خط را در یک آرایه قرار داد و نقطه اولی یا آخری را جابه جا کرد اینو کسی پیاده کرده؟

فاطـمه
28-12-2008, 10:36
فک نمی کنم بشه به نقاط رسم شده تو picture message دست رسی داشت
شما چرا از خود line استفاده نمی کنی؟!

mammad*2
28-12-2008, 10:41
چه جوری از خود line استفاده کنم مثلا اندازه یا زاویه خط رو تغییر بدم اگه میشه راهنمایی کنید

فاطـمه
28-12-2008, 10:48
چه جوری از خود line استفاده کنم مثلا اندازه یا زاویه خط رو تغییر بدم اگه میشه راهنمایی کنید
خب من الان وی بی نصب ندارم که دقیق بتونم راهنمایی کنم
ولی می دونم که با line شما خیلی راحت به نقاط ابتدا و انتها دسترسی دارین
مثلا اگر اسم خطی که رسم می کنیم line1 باشه
line1.x1 میشه x نقطه ابتدا
line1.x2 میشه x نقطه انتها
line1.y1 میشه y نقطه ابتدا
line1.y2 میشه y نقطه انتها

mammad*2
28-12-2008, 10:52
از کمکت ممنونم ولی من خط ها را در picturebox با ماوس رسم می کنم و در این حالت هیچ اسمی ندارند

فاطـمه
28-12-2008, 10:54
از کمکت ممنونم ولی من خط ها را در picturebox با ماوس رسم می کنم و در این حالت هیچ اسمی ندارند

خواهش می کنم
یعنی کاربری که از برنامه استفاده می کنه بناس که خطا رو با موس بکشه؟

mammad*2
28-12-2008, 11:24
خواهش می کنم
یعنی کاربری که از برنامه استفاده می کنه بناس که خطا رو با موس بکشه؟
بله با ماوس کشیده میشه و بناست که کاربر با کلیک بر روی هر خط آنرا select کرده و مثل word وبقیه برنامه ها بتواند اندازه آنرا تغییر دهد

فاطـمه
28-12-2008, 14:34
نباید سخت باشه
شما با چه دستوری روی Picturebox نقاشی کردی؟
---------------------------------------------------------------
اینطوری؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه مثه من بنویسی میشه به راحتی موقعیت x,y رو ذخیره کنی:20:

VBYOFSKI
29-12-2008, 20:47
سلام.
اینی که شما میخواین رو نمیشه فقط با دستور Line نوشت اونم فقط روی یه Picture Box. چون برای اینکار باید خط قیبلی که کشیده شده پاک بشه که اینجوری رنگ زیر اون خط به هم میریزه.
با شی Line هم نمیشه چون هیچ خاصیتی نداره که بشه فهمید روش کلیلک شده یا نه.
به نظر من باید به تعداد خط هایی که کشیده میشه Picture Box درست بشه که هر خط توی اون Picture Box کشیده بشه و بعد با تا بع TransparentBlt رنگ پس زمینه اون Picture Box حذف بشه که اینجوری حس میشه خط ها روی هم افتادن. برای جا به جا کردن خط ها هم باید مختصات هر نقطه رو داشته باشه که اگه کاربر روی اون نقطه کلیلک کرد توی Picture Box مربوط به اون خط خط قبلی رو. پاک کنی و خط جدید رو جایگزین کنی.
من الان تا یه جاهاییش رفتم الان ولی نمیدون چرا TransparentBlt کاش رو درست انجام نمیده. تکمیل که شد میزارم.
البته اینایی که گفتم فقط برای خط صاف هستش.

فاطـمه
30-12-2008, 08:35
سلام.
اینی که شما میخواین رو نمیشه فقط با دستور Line نوشت اونم فقط روی یه Picture Box. چون برای اینکار باید خط قیبلی که کشیده شده پاک بشه که اینجوری رنگ زیر اون خط به هم میریزه.
با شی Line هم نمیشه چون هیچ خاصیتی نداره که بشه فهمید روش کلیلک شده یا نه.
به نظر من باید به تعداد خط هایی که کشیده میشه Picture Box درست بشه که هر خط توی اون Picture Box کشیده بشه و بعد با تا بع TransparentBlt رنگ پس زمینه اون Picture Box حذف بشه که اینجوری حس میشه خط ها روی هم افتادن. برای جا به جا کردن خط ها هم باید مختصات هر نقطه رو داشته باشه که اگه کاربر روی اون نقطه کلیلک کرد توی Picture Box مربوط به اون خط خط قبلی رو. پاک کنی و خط جدید رو جایگزین کنی.
من الان تا یه جاهاییش رفتم الان ولی نمیدون چرا TransparentBlt کاش رو درست انجام نمیده. تکمیل که شد میزارم.
البته اینایی که گفتم فقط برای خط صاف هستش.
اینی که می گین درست به نظر می رسه:20:
ولی چه جوری میخواین با هر کلیک یه picturebox جدید ایجاد کنید؟:5:
دستور خاصی در این مورد هست؟

VBYOFSKI
30-12-2008, 11:44
این لینک دانلود برنامه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینی که می گین درست به نظر می رسه:20:
ولی چه جوری میخواین با هر کلیک یه picturebox جدید ایجاد کنید؟:5:
دستور خاصی در این مورد هست؟

برای درست کردن Picturebox جدید میشه از دستور Load استفاده کرد.

دستور Load میتونه از یک شی یه کپی طراحی کنه ولی این شی باید دارای Index باشه. و در زمانی که از دستور Load لاستفاده می شه باید یه Index هم وارد شه که شی ساخته شده جدید با اون Index شناخته بشه. مثل:
Load pic1(1)
تمامی خواص شی جدید که با دستور Load ساخته می شه برابر شیی که ازش کپی گرفته شده است به جز Visible که False هستش.

Open-Source
30-12-2008, 13:16
به نظر من بهترین راه این است که از کنترل line استفاده کنی .
یعنی بعد از تغییر اندازه بوسیله کد های ترسیمی شکل رو ترسیم کنی.

mammad*2
07-01-2009, 19:01
از کمک همه ممنونم مخصو صا VBYOFSKI که یک برنامه جالب در این مورد گذاشتن. من چند روز پیش این مشکلو حل کردم . یک الگوریتم نوشتم که دو سر خط رسم شده را با استفاده از معادله دایره تشخیص می دهد . ضمنا مختصات ابتدا و انتهای هر خط را در یک آرایه ذخیره نمودم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این الگوریتم تو قسمت mousedown استفاده میشه

فاطـمه
18-01-2009, 07:56
از کمک همه ممنونم مخصو صا VBYOFSKI که یک برنامه جالب در این مورد گذاشتن. من چند روز پیش این مشکلو حل کردم . یک الگوریتم نوشتم که دو سر خط رسم شده را با استفاده از معادله دایره تشخیص می دهد . ضمنا مختصات ابتدا و انتهای هر خط را در یک آرایه ذخیره نمودم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این الگوریتم تو قسمت mousedown استفاده میشه
سلام
یکم راجع به کدت توضیح می دی؟!
مقدار اولیه i باید چند باشه؟

mammad*2
25-01-2009, 15:32
دو آرايه تعريف کردم براي ذخيره مختصات ابتدا هرخط با نامهاي xs,ys دو آرايه هم براي ذخيره انتها با نام xe,ye مقدار i هم با رسم هر خط افزايش مي يابد يعني i تعداد خطهاي رسم شده را نگه مي دارد وقتي روی picbox کلیک کنیم اگر مختصات نقطه کلیک شده داخل یک دایره فرضی که مرکزش ابتدا یا انتهای یک خط است باشد آن سر خط انتخاب شده و مختصات آن داخل xm,ym ذخیره می شود