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

نام تاپیک: تصاویر متحرک gif

  1. #1

    تصاویر متحرک gif

    کسی کار با این نوع تصاویر را میدونه ؟

    من از این کد برای اجرای فایل های متحرک gif استفاده کردم .این کدها مشکلی ندارند تصویر در هنگام لود شده اجرا میشه و .. به صورت متحرک نمایش داده میشه .


    privateGraphics g;
    privateEventHandler eh;
    public image()
    {
    InitializeComponent();
    g = myGifAnimation.CreateGraphics();
    eh = newEventHandler(GifAnimation);

    }

    privatevoid GifAnimation(object obj, EventArgs args)
    {

    ImageAnimator.UpdateFrames(myGifAnimation.BackgroundImage);
    g.Clear(myGifAnimation.BackColor);
    g.DrawImage(myGifAnimation.BackgroundImage, newPoint(0, 0));

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



    اما وقتی این فرم را میبندم از این خط

    g.Clear(myGifAnimation.BackColor);

    این خطا را میگیره

    A generic error occurred in GDI+.

    مشکل از کجاست؟

  2. #2
    از اساتید کسی نیست که این مشکل را بتونه حل کنه

  3. #3
    کاربر دائمی آواتار Pioneers
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    217
    اگه در لود شدن مشکلی نداره و فقط در بستن فرم خطا میده، میشه این خطا رو Handle کرد.
    دستور try catch

  4. #4
    نقل قول نوشته شده توسط Pioneers مشاهده تاپیک
    اگه در لود شدن مشکلی نداره و فقط در بستن فرم خطا میده، میشه این خطا رو Handle کرد.
    دستور try catch
    مشکل حل شد اما اگه میشه در صورت امکان و تمایل در مورد اینکه چرا همچنیین مشکلی بوجود اومده؟ وچرا با try catch این مشکل برطف میشه را توضیح دهید؟

    کد تصحیح شده:

    privateGraphics g;
    privateEventHandler eh;
    public image()
    {
    InitializeComponent();
    g = myGifAnimation.CreateGraphics();
    eh =
    newEventHandler(GifAnimation);

    }

    privatevoid GifAnimation(object obj, EventArgs args)
    {
    try
    {
    ImageAnimator.UpdateFrames(myGifAnimation.BackgroundImage);
    g.Clear(myGifAnimation.BackColor);
    g.DrawImage(myGifAnimation.BackgroundImage,
    newPoint(0, 0));
    }
    catch
    {
    //no problem
    }

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

  5. #5
    نقل قول نوشته شده توسط babak23 مشاهده تاپیک
    مشکل حل شد اما اگه میشه در صورت امکان و تمایل در مورد اینکه چرا همچنیین مشکلی بوجود اومده؟ وچرا با try catch این مشکل برطف میشه را توضیح دهید؟

    کد تصحیح شده



    privateGraphics g;
    privateEventHandler eh;
    public image()
    {
    InitializeComponent();
    g = myGifAnimation.CreateGraphics();
    eh = newEventHandler(GifAnimation);

    }

    privatevoid GifAnimation(object obj, EventArgs args)
    {
    try
    {
    ImageAnimator.UpdateFrames(myGifAnimation.Backgrou ndImage);
    g.Clear(myGifAnimation.BackColor);
    g.DrawImage(myGifAnimation.BackgroundImage, newPoint(0, 0));
    }
    catch
    {
    //no problem
    }

    }
    privatevoid image_Load(object sender, EventArgs e)
    {
    ImageAnimator.Animate(myGifAnimation.BackgroundIma ge, eh);
    }





    به جای دوخ قرمز رنگ در کد فوق، کد


    this.Invalidate();

    را بنویسید ببینید مشکلتون حل میشه؟
    البته وقت نکردم روش فکر کنم. مطمئنا راه حل های خیلی بهتری هم هست!!!


    وچرا با try catch این مشکل برطف میشه
    اگه فلسفه بلاک های try catch finally را بدانید، ج.اب این سوالتون را میگیرین. شما در بلاک catch هیچ کدی ننوشتید. خوب مسلما وقتی در بلاک try خطایی اتفاق میافته، کنترل برنامه از همون خطی که خطا در اون روی داده به اولین بلاک catch که بتونه اون خطا را handle بکنه میره و کد های درون اون را اجرا می کنه. (یعنی اینکه می تونید یک بلاک try با چند تا catch داشته باشید. که catch عمومی بایستی آخرین catch باشه در کد)
    بلاک catch ای که هیچ کدی داخلش نداشته باشه می تونه هر نوع خطایی را handle کنه.
    و چون شما در داخل باک catch هیچی ننوشتید خوب طبیعتا هیچ پیغام خطایی هم دریافت نمی کنید. اما این جور استفاده از بلاک های try catch برای handle کردن خطا ها غلط است. در واقع شما خطا را handle نمی کنید. بلکه دارین آن را ماست مالی می کنید. که متاسفانه یا خوشبختانه خیلی از برنامه نویسا از این روش استفاده می کنند.

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


  6. #6
    نقل قول نوشته شده توسط night_fall2 مشاهده تاپیک
    به جای دوخ قرمز رنگ در کد فوق، کد

    this.Invalidate();

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


    نقل قول نوشته شده توسط night_fall2 مشاهده تاپیک

    البته وقت نکردم روش فکر کنم. مطمئنا راه حل های خیلی بهتری هم هست!!!

    .
    چه راه هایی؟ در صورت امکان کسی هست که راه جدید و معقولانه ای را پیشنهاد کنه؟

  7. #7
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    سلام راه کلی برای این مسئله از MSDN , و بقول شما معقولانه اینه



    using System;
    using System.Drawing;
    using System.Windows.Forms;
    publicclassanimateImage : Form
    {
    //Create a Bitmpap Object.
    Bitmap animatedImage = newBitmap("SampleAnimation.gif");
    bool currentlyAnimating = false;
    //This method begins the animation.
    publicvoid AnimateImage()
    {
    if (!currentlyAnimating)
    {
    //Begin the animation only once.
    ImageAnimator.Animate(animatedImage, newEventHandler(this.OnFrameChanged));
    currentlyAnimating =
    true;
    }
    }
    privatevoid OnFrameChanged(object o, EventArgs e)
    {
    //Force a call to the Paint event handler.
    this.Invalidate();
    }
    protectedoverridevoid OnPaint(PaintEventArgs e)
    {
    //Begin the animation.
    AnimateImage();
    //Get the next frame ready for rendering.
    ImageAnimator.UpdateFrames();
    //Draw the next frame in the animation.
    e.Graphics.DrawImage(this.animatedImage, newPoint(0, 0));
    }
    publicstaticvoid Main()
    {
    Application.Run(newanimateImage());
    }
    }


    من خودم با این کلی کار کردم هیچ مشکلی نداشت اگه مشکلی داشتی بگو
    آخرین ویرایش به وسیله ARA : یک شنبه 02 دی 1386 در 10:34 صبح دلیل: تصحیح کد

  8. #8
    نقل قول نوشته شده توسط babak23 مشاهده تاپیک
    البته دیگه خطای مربوطه را نمیده اما تصویر هم ثابت باقی میمونه؟
    والا توی این نمونه که فرستادم ظاهرا کار می کنه !!!!
    فایل های ضمیمه فایل های ضمیمه

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


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

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