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

نام تاپیک: شرح این سورس کد !

  1. #1
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    Question شرح این سورس کد !

    سلام
    دوستان لطف میکنید این کد رو خط به خط برام شرح بدین !
    واسه رسم موج سینوسی تو یه پنل هست ...
    .
    .
    .
    میترسم استاد بپرسه نتونم جواب بدم ؟
     private double DegreeToRadian(double angle)        {
    return Math.PI * angle / int.Parse(textBox3.Text);
    }


    private void Draw(double N)
    {
    int Yoffset = panel1.Height / 2;
    Graphics G = panel1.CreateGraphics();
    Pen P = new Pen(Color.Yellow, 1.5f);//ضخامت نمودار
    float x1, y1;
    for (double X = 0; X <= 360; X++)
    {
    x1 = (float)X;
    y1 = Yoffset + ((float)Math.Sin(DegreeToRadian(X * N)) * int.Parse(textBox2.Text));
    G.DrawRectangle(P, x1, y1, .5f, .5f);
    }
    P.Dispose();
    }

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: شرح این سورس کد !

    تابع تبدیل درجه به رادیان رو که اشتباه نوشتی! پس عدد ۱۸۰ کجاست؟!

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

    نقل قول: شرح این سورس کد !

    با سلام

    کد زیر واضح می باشد یک مقدار اعشاری گرفته و درجه را به رادیان تبدیل می کند و مقدار آن را برمی گرداند.
    int.Parse(textBox3.Text) که مقدار رشته را به عدد تبدیل میکند.


    private double DegreeToRadian(double angle) {
    return Math.PI * angle / int.Parse(textBox3.Text);
    }



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

    private void Draw(double N) {


    نقطه وسط کنترلی که قرار است رسم نمودار از آنجا شروع شود بدست می آید.

    int Yoffset = panel1.Height / 2;

    برای اینکه نمودار در کنترل panel1 رسم شود.(یعنی مختصات که می دهیم به کنترل panel1 می رود)

    Graphics G = panel1.CreateGraphics();

    برای این که بتوانیم چیزی بنویسیم یا رسم کنیم باید یک قلم تعریف کنیم که اینجا رنگ و ضخامت آن تعریف شده.

    Pen P = new Pen(Color.Yellow, 1.5f);

    دو تا متغیر اعشاری برای نگهداری مختصات

    float x1, y1;

    یه حلقه

    for (double X = 0; X <= 360; X++) {


    مقدار x را از نوع doube به نوع float‌ تبدیل کرده و در متغیر x1 می ریزد

    x1 = (float)X;

    همون فرمول اصلی هست که باعث می شه y در موج سینوسی بالا پایین بشه

    y1 = Yoffset + ((float)Math.Sin(DegreeToRadian(X * N)) * int.Parse(textBox2.Text));

    میگه یک مستطیل در مختصات(x1,y1) با عرض و طول (.5f, .5f) با قلم p که قبلا تعریف کردی و درون panel1 رسم می شود.

    G.DrawRectangle(P, x1, y1, .5f, .5f);

    حافظه ای که به p اختصاص یافته را آزاد می کند.

    } P.Dispose();

    }



    با تشکر

  4. #4
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: شرح این سورس کد !

    نقل قول نوشته شده توسط elec60 مشاهده تاپیک
    تابع تبدیل درجه به رادیان رو که اشتباه نوشتی! پس عدد ۱۸۰ کجاست؟!
    سلام ...
    اینو از یجا گیر آوردم ! اگه خودم نوشته بودم که شرح نمی خواستم
    چطوری بهش زمان رو هم اضافه کنم که فرکانس رو بر حسب هرتز بهم بده ...

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

    نقل قول: شرح این سورس کد !

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

    چطوری بهش زمان رو هم اضافه کنم که فرکانس رو بر حسب هرتز بهم بده ...

    با سلام


    با سلام لطفا بیشتر توضیح بدهید.


    با تشکر

  6. #6
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: شرح این سورس کد !

    سلام
    الان توی تکست باکس ها عدد رو میدی بترتیب :
    1- تعداد موج = 8
    2- ارتفاع موج = 25
    3- سیمبل ریت (پیش فرض 180)

    یک موج سینوسی با فرکانس 8 (هشت موج) با ارتفاع موج 25 رسم میکنه !
    حالا میخوام بهش زمان رو هم اضافه کنم (واحد فرکانس هرتز - فرکانس تقسیم بر ثانیه)
    که بعد از رسم موج توی یه لیبل این هشت موج رو تقسیم بر زمان کنه و حاصل رو بده (که با این مثال میشه 8 هرتز و اگه زمان بشه 2 ثانیه جواب میشه 4 هرتز)

    می خواین سورس رو بزارم ؟

  7. #7
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

    نقل قول: شرح این سورس کد !

    با سلام

    یعنی فرم بصورت آهسته نمایش داده بشه.

    با تشکر

  8. #8
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: شرح این سورس کد !

    نه !
    در واقع موج رسم شده رو (اگه زمان 2 ثانیه هست) نصفش رو توی پنل نشون بده !
    یعنی چهار تا از موج ها رو نشون بده (اگه فرکانس هشت باشه)

  9. #9
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

    نقل قول: شرح این سورس کد !

    با سلام

    دوست عزیز

    تقریبا متوجه شدم.

    اگر امکانش هست سورس را بگذارید.

    با تشکر

  10. #10
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: شرح این سورس کد !


  11. #11
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

    نقل قول: شرح این سورس کد !

    با سلام

    تغییرات اعمال شد.

    ببین اونی که می خواستی شد:
    ======================================

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace Test_Spactrum_Analyzer
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private int Frequence;
    private int height;
    private int speed;
    private int time;
    private double DegreeToRadian(double angle)
    {
    return Math.PI * angle / int.Parse(textBox3.Text);
    }

    private void Draw(double N)
    {
    int Yoffset = panel1.Height / 2;
    Graphics G = panel1.CreateGraphics();
    Pen P = new Pen(Color.Yellow, 1.5f);
    float x1, y1;
    x1 = 0;
    for (double X = 0; X <= 360; X++)
    {
    //x1 = (float)X;
    y1 = Yoffset + ((float)Math.Sin(DegreeToRadian(X * N)) * int.Parse(textBox2.Text));
    G.DrawRectangle(P, x1, y1, .5f, .5f);
    x1 += (float)2;
    }
    P.Dispose();
    }

    private void button3_Click(object sender, EventArgs e)
    {
    try
    {
    this.Frequence = int.Parse(textBox1.Text);
    this.height = int.Parse(textBox2.Text);
    this.speed = int.Parse(textBox3.Text);
    this.time = int.Parse(textBox4.Text);

    Graphics G = panel1.CreateGraphics();
    panel1.Refresh();
    Draw(int.Parse(textBox1.Text)/int.Parse(textBox4.Text));
    }
    catch
    {
    MessageBox.Show("مقدار وارد شده صحیح نیست", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {
    Pen myPen = new Pen(Color.Red);
    System.Drawing.Graphics formGraphics = this.CreateGraphics();
    int my, mx;
    int[] rasmx = new int[100];
    int[] rasmy = new int[100];
    for (int i = 1; i < 90; i++)
    {
    mx = i * 4;
    my = Convert.ToInt32(Math.Sin(mx)) * 45;
    rasmx[i] = mx;
    rasmy[i] = my;
    formGraphics.DrawLine(myPen, rasmx[i - 1] + 100, rasmy[i - 1] + 100, rasmx[i] + 100, rasmy[i] + 100);
    }
    }

    private void button2_Click(object sender, EventArgs e)
    {
    Form2 f2 = new Form2();
    f2.ShowDialog();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint(e);

    if (this.Frequence>0 && this.height>0 && this.speed>0 && this.time>0)
    {
    Draw(this.Frequence / this.time);
    }
    }
    }
    }


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

    اگه توضیح خواستی بپرس

    با تشکر

  12. #12
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: شرح این سورس کد !

    خیلی آقایی ... دقیقا همینه !
    فقط یه توضیحاتی مثل اون قبلیه بدین ... و اینکه چطور پنل پاک میشه (میخوام یه کلید باشه که اون پنل رو پاک کنه)
    و موج های دیجیتال و دنده اره ای هم بهش اضافه کنم .
    -------------------------------------------------------------
    یه سوال فنی : با مدولاسیون آشنایی دارین ؟

  13. #13
    کاربر دائمی
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تهران
    پست
    437

    نقل قول: شرح این سورس کد !

    با سلام

    دوست عزیز

    مواردی را که خواستید توضیح خواهم داد.

    با مدولاسیون آشنایی ندارم.

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

    شایان ذکر هست که هدف کمک به شما می باشد.

    اما این مسئله باید با همراهی شما صورت گیرد تا در پایان هم به دانش شما و هم به دانش اینجانب اضافه گردد.

    با تشکر

  14. #14
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: شرح این سورس کد !

    سلام
    بازم ممنون ...
    منم میخوام در اصل یاد بگیرم (این برنامه هم هیچ ربطی به رشتم نداره)
    الان تقریبا یه بانک اطلاعاتی و با جزئیات و فاکتور و ... میتونم بنویسم ولی از توابع ریاضی یا گرافیکی اصلا نمیتونم استفاده کنم !
    (البته کلا با ریاضی مشکل درام)
    آموزش بدرد بخوری هم در مورد این دوتا مورد نیست ... ولی واسه بانک اطلاعاتی بسیار زیاده ...

تاپیک های مشابه

  1. مشکل این سورس کجاست ؟؟؟
    نوشته شده توسط tehran2009 در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: دوشنبه 16 آذر 1388, 09:19 صبح
  2. خبر: این سورس ها را تا حالا هیچ جا ندیدید (Open Source)
    نوشته شده توسط iranian-pc در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: سه شنبه 02 تیر 1388, 21:23 عصر
  3. لطفا کامپایل کنین این سورس ها رو
    نوشته شده توسط dr.pantagon در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: شنبه 26 مرداد 1387, 18:20 عصر
  4. درخواست کمک برای اصلاح و تکمیل این سورس کد.
    نوشته شده توسط Programmer.G در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 0
    آخرین پست: پنج شنبه 16 خرداد 1387, 19:33 عصر
  5. اشکال این سورس ساده چیست ؟
    نوشته شده توسط amirepsilon در بخش Classic ASP
    پاسخ: 4
    آخرین پست: جمعه 14 دی 1386, 12:54 عصر

برچسب های این تاپیک

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

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