PDA

View Full Version : ایجاد صفحه نمایش با پیکسل های بزرگ در فرم



barnamenevis300
سه شنبه 10 مرداد 1391, 18:53 عصر
من میخوام روی فرمم یک مستطیل ایجاد کنم که با مربع های نسبتا درشتی که حکم پیکسل ها رو خواهد داشت ایجاد کنم و بعد با دادن مختصات x , y ازش بخوام فلان پیکسل رو تغییر بده.

برای اینکار اول سعی کردم از تعداد زیادی pictureBox استفاده کنم. ولی احساس میکنم زیاد مناسب نیست. میخوام بدونم آیا کنترل یا کامپوننت مخصوص این کار آماد وجود داره؟

barnamenevis300
سه شنبه 10 مرداد 1391, 19:26 عصر
ببخشید میشه انگلیسیش رو بنویسید من متوجه نشدم. گریویو کنترل هست؟

fjm11100
سه شنبه 10 مرداد 1391, 22:52 عصر
من قبلا چنین کاری کردم توصیه جدی میکنم از کنترل های معمولی استفاده نکنی مخصوصا اگر x و y بزرگ هستند. بهتره مستقیما ترسیم کنی چون کنترلها سربار زیادی دارند(خب صدتا خصوصیت و متد دارند و اصلا برای کار دیگه ای زراحی شده اند) کنترل مخصوص خودت را بساز و توش از توابع ترسیمی graphics استفاده کن.

barnamenevis300
چهارشنبه 11 مرداد 1391, 16:31 عصر
کنترل مخصوص خودت را بساز

من با نحوه ساختن کنترل آشنا نیستم. میشه یه سر نخ به من بدید چطور یاد بگیرم؟

hakim22
چهارشنبه 11 مرداد 1391, 17:43 عصر
چیزی که شما نیاز دارید یک محیط گرافیکی است که بشود روی آن خط رسم کرد. این خط ها را در پس زمینه ی یک Panel هم می توانید رسم کنید. یک چند تابع لازم دارید که مفوم مربع ها را ایجاد کند. مثلا اگر بگویید رنگ پیکسل 2 و 2 را قرمز کند تابع یک مربع از چند پیکسل با رنگ قرمز تعیین کند. مختصات واقعی نقاط را درون خودش نگاه دارد.
برای ساختن کنترل از قسمت custom control استفاده کنید. انجام این کار یک تکنیک معمول برنامه نویسی است و با رجوع به یکی از کتابهای برنامه نحوه ی کار را خواهید آموخت.

the king
پنج شنبه 12 مرداد 1391, 02:02 صبح
یک MyControl ساختم که یک کلاس دست سازه که از Control ارث بری کرده. سرعت نمایش
و ترسیم اش نسبت به هر کنترل دیگری بالا است چون تا زمانی که دستور نمایش ندهید
نقاطی که رنگ کرده اید رسم نمیشه و موقع رسم هم یکجا رسم می شوند.

Rows و Cols تعداد سطر و ستون ها رو مشخص می کنه که پیشفرض شون 10 و 10 ئه.
کوچکترین اندازه اش 1 در 1 ئه اما محدودیت خاصی در بزرگی ابعاد نداره.
Borderless اگر True باشه کادر دور ماتریس رو نمی کشه.
Pixels هم یک آرایه دو بعدی است که پیکسل های ماتریس رو مشخص کرده، دقت کنید
که در [Pixels[row, col پارامتر row شماره سطر ئه و col شماره ستون و هر دو از 0 شروع می شوند.
وقتی تغییر دادن رنگ Pixels ها رو انجام دادید یکبار کنترل رو Invalidate کنید تا تغییرات رنگ دیده بشه.
در مثال اش نمونه اینکار هست.
اگه رنگ پیکسلی رو مشخص نکنید رنگ زمینه دیده میشه، به شرطی که رنگ زمینه Transparent نباشه.

هر اندازه که کنترل رو بزرگ کنید به همون نسبت مربع ها بزرگتر دیده می شوند، البته اگه نسبت
طول و عرض به تعداد سطر و ستون ها رو رعایت نکنید پیکسل ها مستطیل دیده می شوند نه مربع.
هر موقع که مقادیر Rows و Cols رو تغییر بدهید ماتریس پیکسل ها ریست میشه، می توانید از
رنگ Transparent برای Background یا یک تصویر برای BackgroundImage ماتریس استفاده کنید.

90616