تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 8 از 8

نام تاپيک: مشکل با کنترل Timer در C#

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Jul 2006
    پست ها
    38

    پيش فرض مشکل با کنترل Timer در C#

    سلام
    در یک برنامه برای حرکت دادن یک عکس از کنترل Timer استفاده کردم که در هر رویداد Tick عکس رو جابجا کنه. اول کار درست بود اما وقتی که تعداد عکسها زیاد شدند به شدت روی صفحه پرش ایجاد میشه (درست مثل همون مواقع که با گرافیک برای حرکت دادن تصویر صفحه رد پاک می کنیم و صفحه پرش می کنه) راه حل به نظر شما چیه که بشه یک PictureBox رو توی صفحه بدون پرش جابجا کرد؟

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اگر میخواهید کارهای گرافیک کنید، راهش تکان دادن PictureBox ها روی Form نیست.
    شما باید تصاویر را داخل یک PictureBox یا Control تکان دهید، فقط یکی!
    باید از دستورات +GDI استفاده کنید.
    در کل دارید چه کار میکنید و چه میخواهید بسازید؟

  3. #3
    داره خودمونی میشه
    تاريخ عضويت
    Jul 2006
    پست ها
    38

    پيش فرض

    نه قصد ایجاد گرافیک ندارم! یعنی به اون صورتی که فرمودید. می خوام مثل مثلا فلش ام.ایکس چند تا عکس رو هم زمان با یک آهنگ حرکت بدم! شاید پیش نهاد بدید خوب اینکارو با فلش بکنم! آره اینو میدونم اما به عنوان یه پروژه دارم با این کار می کنم.
    یه چیزی در حدود دستکاری کردن تابع Update در جاوا می خواستم...
    البته اعتراف می کنم که در باره GDI+ چیزی نمی دونم... اگر در مورد اون هم راهنمایی کنید ممنون میشم

  4. #4
    در آغاز فعالیت
    تاريخ عضويت
    Sep 2008
    پست ها
    6

    پيش فرض

    سلام
    ببخشین من تو ساخت کد با تایمر تو vb.net مشکل دارم میخواستم بدونم امکانش هست منو راهنمایی کنید
    اگه براتون امکان داره یه نمونه کد برام بفرستید ممنون میشم

  5. #5
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

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

    می خوام مثل مثلا فلش ام.ایکس چند تا عکس رو هم زمان با یک آهنگ حرکت بدم
    اگر تصاویرتان ثابت هستند، و منظورتان چیزی مثل فیلم از قبل مشخص و معلوم و همیشه یکسان است، که بهتر است فیلم را در جای دیگر بسازید و خروجی avi یا gif بگیرید برای نمایش در برنامه تان.

    واگر متغییر و دینامیک است، باز هم راهش PictureBox نیست.
    شما باید تصاویر را داخل یک PictureBox یا Control تکان دهید، فقط یکی!
    باید از دستورات +GDI استفاده کنید.
    البته اعتراف می کنم که در باره GDI+ چیزی نمی دونم..
    این که خیلی بده! باید کمی منتظر بمانید تا در وقتی خالی یک نمونه کد فوق العاده ساده برایتان بگذارم.

    ==============

    ببخشین من تو ساخت کد با تایمر تو vb.net مشکل دارم میخواستم بدونم امکانش هست منو راهنمایی کنید
    اگه براتون امکان داره یه نمونه کد برام بفرستید ممنون میشم
    بهتر بود تاپیک دیگری میزدید، یک تاپیک مجزا.
    بعد هم خیلی ساده است، کافیست کامپونت Timer را از Toolbar روی Form تان قرار دهید.
    خصوصیت Interval مشخص کننده پریود زمانی تکرار به میلی ثانیه است و Enabled هم تایمر را روشن و خاموش میکند.
    رویداد Tick هم هر وقع تایمر را اطلاع میدهد.
    واقعاً خیلی ساده است و مشکلی نداره!

  6. #6
    داره خودمونی میشه
    تاريخ عضويت
    Jul 2006
    پست ها
    38

    پيش فرض

    بهتر بود تاپیک دیگری میزدید، یک تاپیک مجزا.
    بعد هم خیلی ساده است، کافیست کامپونت Timer را از Toolbar روی Form تان قرار دهید.
    خصوصیت Interval مشخص کننده پریود زمانی تکرار به میلی ثانیه است و Enabled هم تایمر را روشن و خاموش میکند.
    رویداد Tick هم هر وقع تایمر را اطلاع میدهد.
    واقعاً خیلی ساده است و مشکلی نداره!
    این جواب گویا برای یه پست دیگه بود. سوا من چگونگی استفاده از Timer نبود. سوال من چگونگی جلوگیری از پرش تصاویر داخل PictureBox در حین حرکت بود...

  7. #7
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    این جواب گویا برای یه پست دیگه بود
    این جواب پست 4 بود که من هم گفتم، بهتر بود تاپیک جدیدی میزدند.

    ==============

    این پست چون بزرگ بود، چند بار سعی کردم بفرستم ولی به خطا خورد، برای همین در دو تکه و در دو پست فرستادم.

    و اما نمونه کد شما!
    1)
    کد زیر را در یک فایل cs وارد کنید، مثلاً Project->Add class بزنید و همه متون را حذف و متن زیر را به جایش وارد کنید.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    ادامه در پست بعد ...

  8. #8
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام مجدد و این هم ادامه مطالب ...

    2)
    پروژه را بدون خطا کامپایل کنید Project->Rebuild Solution

    3)
    حالا اگر به نمایه طراحی Form بروید باید یک کنترلر جدید با نام LayeredPictureBox در Toolbar داشته باشید، ان را روی فرمتان قرار دهید.

    4)
    خوب تمام است، شما آماده کد نویسی هستید!
    شما میتوانید هر تعداد تصویر را در یک کنترلر LayeredPictureBox نشان دهید و هر زمان خواستید، لایه تصویر جدید اضافه کنید یا حذف کنید تا تغییر مکان دهید تا رو و زیر بودنشان را اصلاح کنید و...
    )فقط با یک کنترلر و بدون پرش!)

    برای اضافه کردن یک لایه جدید تصویر از کد زیر استفاده کنید،
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    برای حذف هم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    برای حرکت هم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و ...
    و ...

    اما توجه کنید که در این نمونه فوق العاده ساده و البته سریع، تصویر ثابت میماند، تا شما فرمان LayeredPictureBox1.Invalidate را برای Refresh بدهید.
    یعنی هر زمان تغییراتی دادید، در پایان تغییرات فرمان مذکور را بدهید.

    این روش بسیار ساده و موثر است و الگوریتم اصلی کاری تمام محیطهای طراحی است.
    من خودم با توسعه و تکامل همین روش یک کنترلر Designer کامل ساختم که امکان Zoom و Print و ارتباط پویا با کاربر را هم دارد، یعنی کاربر روی لایه ها کلیک میکند و محدوده استاندارد نقطه چین با 8 مربع کوچک در دور ان لایه نشان داده میشود که کاربر میتواند با گرفتن مربع های کوچک لایه را تغییر سایز دهد و... و...

    و فقط و فقط همه این کارها با ترسیم در متد OnPaint انجام شده بدون پرش و بدون کنترلر اضافه، یعنی کل سازه و حتی کارهای دینامیک با فرامین ماوس کاربر همه با دستورات مستقیم +GDI انجام شده.

    پس جای کار دارد و محدودیت هم ندارد، شما میتوانید کد فوق را برای هر امکانی که دوست دارید توسعه دهید و کامل کنید.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •