ايران ويج

نسخه‌ی کامل: ترسیم یه ماتریس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام خدمت تمامی اساتید بزرگوار
سوال:
چطور میشه یه ماتریس a*b از اعداد Long ( به عنوان کد رنگ RGB ) رو توی یه PictureBox یا یه جای دیگه نشون داد.
توجه:
من میخوام که عکس فورا نمایش داده بشه.

اگه به ویبی چنین چیزی امکان نداره زبانی که بشه باهاش چنین کاری کرد رو معرفی کنید.

جواب:
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

با تشکر.
توی API ویندوز ،خوب تابع SetPixel اینکار رو میتونه برات انجام بده بطوریکه دونه دونه اونها رو در حلقه بخونی و ترسیمشون کنی. البته اگر میخوای خیلی سریع انجام بدی ( ترسیم یک دفعه انجام بشه ) باید از Double Buffering کمک بگیری . یعنی یک DC بسازی تو حافظه . اطلاعات پیکسل ها رو اونجا توی حافظه بنویسی . بعد با تابع BitBlt اونها رو سریع به حافظه تصویری منتقل کنی . اینطور کسی متوجه ترسیم شدن پیکسل ها نمیشه !
خب تابع Setpixel هم آهسته كار ميكنه.
خب ولي قضيه Double Buffering و ساختن DC رو اگه ميشه يه خرده بيشتر توضيح بده و يه مثال هم اگه زدي كه بهتر.( به هر زبوني كه خواستي )
برای picturebox بهترین کار اینه که autoredraw=true قرار بدید . در این حالت تا شما اون رو refresh نکنی چیزی نمایش داده نمیشه . شما نوشتن اطلاعت پیکسل ها رو با Setpixel انجام میدی دقیقا مثل همیشه اما autoredraw=true اجازه میده این نوشتن توی حافظه انجام بشه و تا قبل از refresh هیچ ترسیمی انجام نشه . فقط یادت باشه که این تکنیک به event ها حساسه یعنی مثلا resize کردن فرم به طور اتوماتیک picturebox رو دوباره ترسیم میکنه !
تو اين روش هنوز مشكل سرعتو دارم. مخصوصا اگه بخوم يه Progressbar بندازم يا يه Lable كه ميزان پيشرفتو نشون بده كه ديگه سرعت خيلي پايين مياد.