نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشکل با پخش فایلهای gif در سی شارپ.

  1. #1
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727

    مشکل با پخش فایلهای gif در سی شارپ.

    سلام
    من یه فرم loading درست کردم که یه PictureBox توشه و اونو با یه انیمیشن gif تنظیم کردم که وقتی مثلا یه فرمی میخواد باز بشه و از دیتابیس جدول رو میخونه، این فرم فراخوانی میشه تا به کاربر نشون بده که فرم در حال loading شدنه،منتها نمیدونم چرا وقتی فرم loading نمایش داده میشه،فقط یه تصویر ثابت از gif نشون میده و انیمیشنش پخش نمیشه، با ApplicationDoevent() هم کارم راه نیفتاد،کسی تا حالا تونسته از gif استفاده کنه ؟؟ چطوری ؟

  2. #2
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    یه کنترل واسه همین کار در codeproject وجود داره... (با C++‎) ببین به دردت میخوره؟!
    http://www.codeproject.com/staticctrl/gifanimation.asp

  3. #3
    کاربر دائمی آواتار molana alavi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    مازندران (فعلا تهران)
    پست
    150
    منم خیلی وقت بود که همچین مشکلی داشتم
    امیدوارم با سورس ارئه شده مشکل حل شه
    از PC2st هم ممنون و متشکرم

  4. #4
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    از PC2st هم ممنون و متشکرم
    من هم ممنونم که پست من رو مطالعه فرمودید.

    دیشب که اون سورس رو دیدم و در همین جا یک پست واسش زدم، یک ساعت بعد به ذهنم رسید که در msdn هم سرچ کنم. اونوقت بود که فهمیدم در دات نت فریم ورک، یک کلاس برای همین منظور در BCL گنجانده شده که دیگه لازم نیست از اون کنترلی که در codeproject هست استفاده کنیم.

    نام این کلاس ImageAnimator هست و طریقه استفاده از اون به شرح ذیل:
    این کلاس یک Static Class میباشد، در این کلاس یک متد بنام Animate وجود داره که با استفاده از اون، مراحل نمایش یک gif بکمک یک ترد (thread) صورت میگیره.
    این متد به شکل زیر استفاده میشه:

    ImageAnimator.Animate(image, onFrameChangedHandler)

    image، همون شئ ائی از نوع Image هست که مثلا تصویر gif در اون قرار داره.
    onFrameChangedHandler، یک شئ از نوع EventHandler هست که بکمک اون به یک متد اشاره میکنه که توسط یک ترد باید مرتبا اجرا بشه تا زمانی که متد StopAnimate فراخوانی بشه.

    فکر کنم بهتر باشه یک نمونه برنامه رو خودتون ببینید، یک PictureBox بنام myGifAnimation و یک Button بنام startButton و یک Button بنام stopButton ایجاد کنید و همه اینها رو روی یک فرم قرار بدید. میخوایم کاری کنیم که با کلیک روی اون دکمه ها، gif نمایش داده بشه یا stop بشه. پس برای هر کدوم از دو تا دکمه startButton و stopButton یک رویداد Click رو ایجاد میکنیم و در کل، کدهای داخل فرم برنامه باید شبیه به زیر باشه (به عبارت دیگه، کدهای زیر رو به جای کدهای فرم، کپی و paste کنید)


    private Graphics g;
    private EventHandler eh;

    public Form1()
    {
    InitializeComponent();
    myGifAnimation.BackgroundImage = new Bitmap(@"C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\animations\FINDFILE16 .gif");
    myGifAnimation.Size = myGifAnimation.BackgroundImage.Size;
    g = myGifAnimation.CreateGraphics();
    eh = new EventHandler(GifAnimation);
    }

    private void GifAnimation(object obj, EventArgs args)
    {
    ImageAnimator.UpdateFrames(myGifAnimation.BackgroundImage);
    g.Clear(myGifAnimation.BackColor);
    g.DrawImage(myGifAnimation.BackgroundImage, new Point(0, 0));
    }

    private void startButton_Click(object sender, EventArgs e)
    {
    ImageAnimator.Animate(myGifAnimation.BackgroundImage, eh);
    }

    privatevoid stopButton_Click(object sender, EventArgs e)
    {
    ImageAnimator.StopAnimate(myGifAnimation.BackgroundImage, eh);
    }


    مطمئن نیستم که به صورت صحیح کدها رو نوشته باشم. اگر ایراد یا اشکالی داشت، خوشحال میشم که گوشزد کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •