PDA

View Full Version : مبتدی: مشخص کردن یک قسمت از تصویر برای کلیک ماوس



davood_mortazavi
شنبه 10 فروردین 1392, 15:59 عصر
سلام علیکم
می خوام در برنامه یک عکس انسان بگذارم که اگر کاربر روی دستش کلیک کرد یک رویداد اتفاق بیفتد ، اگر روی چشم کلیک کرد یکی و ... خلاصه سوالم اینه که چطوری میشه یک محدوده برای کلیک ماوس تعیین کرد که شکل هندسی مشخصی ندارد؟

متشکر

amirmms
شنبه 10 فروردین 1392, 21:12 عصر
و علیکم السلام
شما میتوانید عکس را در فوتوشاپ به قسمت های مد نظر تقسیم و سپس وارد برنامه کنید یا می توانید لیبل بر روی عکس خود قرار دهید و با تنظیم کردنش عکسو درست کنید.

davood_mortazavi
شنبه 10 فروردین 1392, 21:28 عصر
خیلی ممنون از توجهتون.
قسمتهایی که میخوام مشخص کنم خیلی زیاد است ، عکس انسان را به عنوان مثال گفتم.
لیبل هم نمیتونم بگذارم چون برخی قطعه های کوچک است و متن خیلی ریز میشه.
کنترلی نداریم که مثل پنل یا نمیدونم یک چیزی تو این مایه ها بشه یک جایی را مشخص کرد ؟

ali reza mansoori 2
شنبه 10 فروردین 1392, 22:14 عصر
فقط و فقط از WPF استفاده کن
بهت قول میدم پشیمون نمیشی
یعنی این کاری که میگی رو راحت میشه با Photoshop و نرم افزار Blend بدون کد نویسی انجام داد

amirsajjadi
یک شنبه 11 فروردین 1392, 21:17 عصر
سلام
با استفاده از رویداد mouse_click جعبه تصویر نقطه ای رو که کلیک خورده رو میتونید در بیارید

Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseClick
MsgBox(e.X)
End Sub

davood_mortazavi
سه شنبه 13 فروردین 1392, 08:10 صبح
برنامه شبیه یک نقشه است ولی شما فرض کنید دارید روی یک نقشه شهر کار می کنید، من میخوام کاربر روی هر کوچه که کلید میکنه ، اطلاعاتش را نشان بدم. اینهمه مختصات را نمی تونم تعریف کنم بعد هم در آوردن مختصات کوچه هایی که صاف نیستند چطوری ممکنه ؟

در مورد wpf هم هیچی نمیدونم ، کامپوننت است ؟، اگر یک آموزش مبتدی دارید ، اینجا بگذارید یا لینک بدید ممنون میشم.

amirsajjadi
سه شنبه 13 فروردین 1392, 09:42 صبح
WPF رو بیخیال شو. چون یادگیریش زیاد هم آسون نیست مخصوصا اگه اصلا کار نکرده باشی.

نقشه ی شما چجوریه؟ تصویره؟
دقیقا توضیح بدید که چه کاری میخوای انجام بدی. چون من زیاد متوجه منظورت نشدم؟

davood_mortazavi
سه شنبه 13 فروردین 1392, 10:54 صبح
خیلی ممنون از توجهتون
بله یک فایل jpg است. ببینید فرض کنید نقشه های که برای سفرهای نوروزی برای هر شهر چاپ میشه. ما بخواهیم روی هر خیابان و کوچه که کاربر کلیک میکنه یکسری اطلاعات را در یک فرم دیگه ببینه و بتونه ویرایش کنه. یک کاری شبیه arc gis ولی خیلی ساده تر.

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

amirsajjadi
سه شنبه 13 فروردین 1392, 12:39 عصر
شما برای کاهش نعداد نقاط میتونید یک نقطه شروع و یک نقطه پایان رو ذخیره کنید بعد میتونید با یک فرمول ساده نقطه ای رو که بین اون نقاط انتخاب شده رو چک کنید. دقت کنید که دایره و بیضی و چندضلعی رو هم میتونید ترکیبی از خطوط فرض کنید و با همین فرمول محاسبه کنید.

davood_mortazavi
سه شنبه 13 فروردین 1392, 20:16 عصر
سلام
شما یک خیابان مایل ( شمال شرقی به چنوب غربی ) را در نظر بگیرید که چندتا فرعی ( غیر قائم ) داره ، چطوری میشه دوتا نقطه را ذخیره کرد و برای بقیه فرمول نوشت ؟
روی ذخیره مختصات خیلی فکر کردم ، در هر حالتی به مشکل می خورم .
بیشتر دنبال یک کنترلی ، کامپوننتی یا چیزی شبیه به این میگردم که بشه یک محدوده غیر هندسی را مثل کلید شبیه سازی کرد و برای اون رویداد نوشت.
فکر دیگه ای که به نظرم اومد اینه که zoom های مختلف روی تصویرم تعریف کنم ( مثل کاری که گوگل ارث میکنه ) و وقتی تصویر بزرگنمایی میشه با لیبل اینکار را انجام بدهم ، ولی اونهم نمیدونم چطور میشه زومهایی شبیه گوگل ساخت چون اگر بخوام مثلا هر کوچه را با فتوشاپ زوم کنم و یک عکس بگذارم میشه نزدیک به 1000 تا عکس باید برنامه خودش بتونه این عمل را انجام بده که من کدش را نمیدونم.

یا حق و سپاس

amirsajjadi
چهارشنبه 14 فروردین 1392, 06:10 صبح
دوست عزیز دایره، مربع، مستطیل و خطوط مایل همه و همه رو میشه با یک خطوط راست به هم پیوسته پیاده سازی کرد. شما توی بانک اطلاعاتی یک فیلد نقطه شروع داشته باشید و یک فیلد نقطه پایان حالا وقتی روی تصویر کلیک میشه با یک دستور اسکیوال میتونید اون نقطه رو توی نقاط پایان و نقاط شروع جستجو کنید. این پروژه شما اینقدر هم که فکر میکنید پیچیده نیست. برای حل مسائل نیاز نیست به سمت راه حل های پیچیده برید.

davood_mortazavi
چهارشنبه 14 فروردین 1392, 07:42 صبح
سلام و تشکر
شما تصویر زیر را ببینید ، صرفه نظر از عرض متغیر خیابان ها چطوری میشه مختصات کلیک در نقاط قرمز را با داشتن ابتدا و انتهای سه خیابان جستجو کرد ؟

102229

amirsajjadi
چهارشنبه 14 فروردین 1392, 08:54 صبح
نقطه شروع خیابون اول رو مثلا بگیرید 1,1 و پایانشو بگیرید مثلا 50,10 و به همین ترتیب نقاط دیگه رو مشخص کنید حالا اگه طرف بیاد و روی نقطه 30,07 کلیک کنه میدونید که روی خیابون اول کلیک کرده. من خودم از این روش استفاده کردم که میگم والا اینقدر مطمئن نمیگفتم.

davood_mortazavi
چهارشنبه 14 فروردین 1392, 09:36 صبح
چرا همین مختصات 30,07 روی فرعی اول نیست ؟!
با همون مختصات ها مختصات فرعی اول ( فرعی پایین ) مثلا میشه 20,03 تا 90,08 . نمیدونم نمی تونم منظورم را خوب بگم یا منظور شما را خوب متوجه نمیشم.

zahedi121
پنج شنبه 15 فروردین 1392, 09:10 صبح
سلام
چندتا ایده :
1- از کنترل lineshape استفاده کنید. یعنی در وسط همه خیابانها خط بکشید .
2- یک دکمه کوچک (یک دایره ) برای هر قطعه بگذارید ( اگر لیبل جا نمیشه ) .
دوتا توضیح کوچک :
- بهترین راه حل شما همان wpf است که یک انجمن (http://barnamenevis.org/forumdisplay.php?142-WPF) جدا هم در همین سایت دارد ( اگر پشتکار داشته باشید ) هم آموزش دارد و هم مثال.
- در خصوص استفاده از سیستم مختصات با توجه به اینکه امکان وجود خطوط متداخل و هم شیب وجود دارد و میگید عرضها هم در طول یک قطعه فرق میکند ، خیلی سخت انجام میشه ، چون باید مختصات اطراف هر قطعه را در بانک وارد کنید، البته میتوانید اول یک برنامه بنویسید که مختصات نقاط کلیک ماوس را ذخیره کند و ... ولی با حجمی که شما میگید سخت است. برنامه ای که ضمیمه کردم براتون مختصات ها را در یک فایل تکست ذخیره میکند.

در پایان اگر دقیق بگید روی چه نقشه ای میخواهید کار کنید شاید راه حل مناسب دیگری باشد .

موفق باشید

davood_mortazavi
پنج شنبه 15 فروردین 1392, 12:36 عصر
من هم دنبال یک کنترل هستم ، غیر از خط کنترل نامرئی نداریم که بشه روی قطعات گذاشت ؟

نقشه ام تخصصیه ولی خیلی شبیه نقشه شهرهاست.

خیلی سپاسگزارم

zahedi121
شنبه 17 فروردین 1392, 23:47 عصر
سلام
اگر فقط بی رنگ شدن مشکل را حل می کند که میتونید رنگ را از قسمت web روی Transparent قرار بدید :
102438
دو تا پیشنهاد :
کرسر ماوس خط را هم روی hand بگذارید.
عرض خط را هم یک مقدار زیاد کنید.
به خاصیت select color خط هم دقت کنید که میدونم خیلی در کار شما مفید خواهد بود.

موفق باشید

davood_mortazavi
یک شنبه 18 فروردین 1392, 10:21 صبح
خیلی متشکرم :تشویق:

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

NaserHadi
پنج شنبه 21 فروردین 1393, 12:11 عصر
با سلام
اگر در برنامه شما امكان زوم باشه اونوقت چطور ميشه كه مختصات در حالت زوم ثابت بمونه؟

NaserHadi
پنج شنبه 21 فروردین 1393, 12:12 عصر
سلام
چندتا ایده :
1- از کنترل lineshape استفاده کنید. یعنی در وسط همه خیابانها خط بکشید .
2- یک دکمه کوچک (یک دایره ) برای هر قطعه بگذارید ( اگر لیبل جا نمیشه ) .
دوتا توضیح کوچک :
- بهترین راه حل شما همان wpf است که یک انجمن (http://barnamenevis.org/forumdisplay.php?142-WPF) جدا هم در همین سایت دارد ( اگر پشتکار داشته باشید ) هم آموزش دارد و هم مثال.
- در خصوص استفاده از سیستم مختصات با توجه به اینکه امکان وجود خطوط متداخل و هم شیب وجود دارد و میگید عرضها هم در طول یک قطعه فرق میکند ، خیلی سخت انجام میشه ، چون باید مختصات اطراف هر قطعه را در بانک وارد کنید، البته میتوانید اول یک برنامه بنویسید که مختصات نقاط کلیک ماوس را ذخیره کند و ... ولی با حجمی که شما میگید سخت است. برنامه ای که ضمیمه کردم براتون مختصات ها را در یک فایل تکست ذخیره میکند.

در پایان اگر دقیق بگید روی چه نقشه ای میخواهید کار کنید شاید راه حل مناسب دیگری باشد .

موفق باشید
با سلام
اگر در برنامه شما امكان زوم باشه اونوقت چطور ميشه كه مختصات در حالت زوم ثابت بمونه؟