PDA

View Full Version : به دست آوردن رنگ یک پیکسل از کنترل



emad_67
پنج شنبه 05 مهر 1386, 15:16 عصر
فرض کنید من یک کنترل سفارشی دارم. حالا میخوام کاربر با کلیک بر هر نقطه اون، رنگ اون پیکسل از کنترل رو به دست بیارم. چیکار باید بکنم؟

Amir Oveisi
پنج شنبه 05 مهر 1386, 15:52 عصر
کنترل رو به استفاده از DrawToBitmap به Image تبدیل کن و با استفاده از GetPixel رنگ اون پیکسل رو پیدا کن.
یه نمونه از GetPixel قبلا تو سایت گذاشتم . سرچ کنید

emad_67
پنج شنبه 05 مهر 1386, 17:34 عصر
میشه یه نمونه کد بزارید. جست جو هم کردم ولی باز هم مشکلم رفع نشد برای مثال من برای به دست اوردن رنگ یه پیکسل از یک دکمه اینجوری نوشتم:


Bitmap bmp= new Bitmap(button1.Width,button1.Height);
button1.DrawToBitmap(bmp, new Rectangle(button1.Location, button1.Size));
panel1.BackColor = bmp.GetPixel(10, 10);

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

emad_67
جمعه 06 مهر 1386, 09:17 صبح
کسی نمیتونه کمکی کنه؟

emad_67
جمعه 06 مهر 1386, 20:30 عصر
خواهشا یکی یه کمکی بکنه

PC2st
جمعه 06 مهر 1386, 22:35 عصر
کد باید درست کار کنه...
در کدهایی که نوشتی عبارت button1.Location رو به new Point(0, 0) تغییر بدید.
برای اینکه کنترل رو در مکان صفر و صفر از شیئ bmp رسم کنه.

emad_67
جمعه 06 مهر 1386, 23:28 عصر
من کد رو به این شکل تغییر دادم و فرقی نکرد. بازم درست کار نیمکنه


Bitmap bmp = newBitmap(button1.Width, button1.Height);
button1.DrawToBitmap(bmp, newRectangle(newPoint(0,0), button1.Size));
panel1.BackColor = bmp.GetPixel(15, 15);

با تغییر مختصات Getpixel هر دفعه یه رنگ بر میگردونه

PC2st
جمعه 06 مهر 1386, 23:33 عصر
با تغییر مختصات Getpixel هر دفعه یه رنگ بر میگردونه
ببخشید خوب متوجه نشدم مگر نباید اینطوری باشه؟ مثلا پیکسل 5 و 5 با پیکس 6 و 5 باید فرق کنه...

emad_67
جمعه 06 مهر 1386, 23:38 عصر
آخه من رنگ زمینه کنترل ام ثابت هست . مثلا توی این مثال یک دکمه رو قرار دادم. ولی روی یک panel هم امتحان کردم که رنگ زمینه اون آبی بود ولی تنها رنگی که برنمیگیردونه آبی هست.

PC2st
جمعه 06 مهر 1386, 23:57 عصر
منظورت چنین چیزی هست...

emad_67
شنبه 07 مهر 1386, 00:11 صبح
خیلی ممنون از برنامت و همچنین لطفی که کردی. مشکل حل شد