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

نام تاپیک: چرخاندن تصویر

  1. #1

    چرخاندن تصویر

    سلام...یه برنامه ای نوشتم که اطلاعاتی رو از یه قطب نما میگیره و نمایش عددی میده ..حالا میخوام یه تصویر از یه قطب نما روی فرمم قرار بدم و تغییرات قطب نما را به صورت گرافیکی و با تصویر نشون بدم ...برای این کار نیاز هست که تصویر رو بچرخونم ولی چرخش تصویر خود سی شارپ جواب خوبی نمیده...اینو بگم که شکل گرافیکی که مد نظرم هست دو قسمته یه بخش ثابت که درجه رو نشون میده از صفر تا 360 و یه بخش دیگه که متحرکه و در واقع جهت N رو نشون میده ...ممنون میشم اگه کسی بتونه کمکی بکنه

  2. #2
    کاربر دائمی آواتار Saeed.Masoumi
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    نامعلوم
    پست
    539

    نقل قول: چرخاندن تصویر

    سلام
    برای اینکار دو تا روش فعلا به ذهنم می رسه:

    1. عقربه رو خودت با DrawLine رسم کنید که نیاز به یک سری محاسبات ریاضی دارید :


    • صفحه را به 360 قسمت تقسیم کنید فاصله هر نشانه از نشانه بعدی برابر 360/360 یعنی 1 درجه سپس بیاید و 0 (یا همان 360 ) را مبدا در نظر بگیرید و در صورت هرگونه تغییر در مقدار ورودی به ازای ورودی ضرب در 1 درجه مختصات انتهای بردار (همان عقربه) را بدست بیاورید و محل ابتدای بردار نیز همان مرکز دایره صفحه است.


    • اگر این روش رو انتخاب کردین این قسمت را مطالعه بکنید بد نیست:

    لینک
    2.با استفاده از روش زیر Image خود را (اگر عقربه از جنس Image باشد) بچرخانید:
    ذکرچند نکته لازم است:

    • باید در هنگام چرخش حواستون به Orgin تصویر باشد (یعنی همان نقطه ای که کلیه ترانسفورم ها چه Scale چه Rotate و چه Translate نسبت به آن نقطه محاسبه می شود)
    • حواستون به اندازه تصویر ورودی باشد امکان دارد درست دوران دهید اما چون تصویر کوچک است شکل عقربه کامل دیده نشود
    • عکس عقربه را بهتر است با فتوشاپ بسازید و Background آنرا Transparent بگذارید و آنرا با فرمت PNG ثبت کنید.سپس وقتی این تصویر را داخل PictureBox قرار می دهید خود به خود PitureBox خاصیت Transparent می گیرد حال فرمول


    private double DegreeToRadian(double AngleInDegree)
    {
    return AngleInDegree*(Math.PI/180);
    }




    private Bitmap rotateImage(Bitmap b, double AngleInDegree)
    {
    //change input angle to radian
    float angle=(float)DegreeToRadian(AngleInDegree);
    //create a new empty bitmap to hold rotated image
    Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
    //make a graphics object from the empty bitmap
    Graphics g = Graphics.FromImage(returnBitmap);
    //move rotation point to center of image
    g.TranslateTransform((float)b.Width/2, (float)b.Height / 2);
    //rotate
    g.RotateTransform(angle);
    //move image back
    g.TranslateTransform(-(float)b.Width/2,-(float)b.Height / 2);
    //draw passed in image onto graphics object
    g.DrawImage(b, new Point(0, 0));
    return returnBitmap;
    }

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

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