رسم منحنی سینوسی با سی شارپ

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

در این باره خاطرات و اتفاقات بعضا جالب و دلخراشی 🙂 هم برام رخ داده.

به طور مثال پروژه درس کامپایلرها رو با اینکه به تنهایی انجام داده بودم و یک اسکنر و پارسر کامل برای زبان سی در محیط سی شارپ نوشته بودم رو با یکی از دوستان نزدیکم که التماس دعای زیادی ازم داشت مشترکا ارائه کردیم. یادم هست که حتی دو خط از اون همه کد رو هم نتونسته بودم براش جا بندازم اما در نهایت نمره اون ۱۹ و نمره من ۱۸ شد !!

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

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

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

 

خروجی برنامه:

arcInC#

 

//

//==================================================
// graphical arc with c# by Mohsen Rashidi
// codeblog.ir
//==================================================

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

namespace graphicalArc
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private PictureBox pictureBox1 = new PictureBox();

        private void Form1_Load(object sender, EventArgs e)
        {
            // Dock the PictureBox to the form and set its background to white.
            pictureBox1.Dock = DockStyle.Fill;
            pictureBox1.BackColor = Color.White;
            // Connect the Paint event of the PictureBox to the event handler method.
            pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
            // Add the PictureBox control to the Form.
            this.Controls.Add(pictureBox1);
        }

        private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {

            Graphics g = e.Graphics;

            g.DrawLine(System.Drawing.Pens.Black, 0, this.Size.Height / 2.0f, this.Size.Width, this.Size.Height / 2);// ترسیم محور افقی
            g.DrawLine(System.Drawing.Pens.Black, this.Size.Width / 2, 0.0f, this.Size.Width / 2, this.Size.Height);// ترسیم محور عمودی

            float xZarib = 70;  // هرقدر این مقدار بیشتر باشید کشیدگی منحنی در عرض بیشتر خواهد بود
            float yZarib = 200; // هرقدر این مقدار بیشتر باشد ارتفاع منحنی سینوسی بیشتر میشود

            float beginX = (float)(-2*xZarib / 2 * System.Math.PI); // ایکس نقطه آغاز ترسیم منحنی
            float endX = (float)(2*xZarib / 2 * System.Math.PI); // ایکس نقطه پایانی ترسیم منحنی
            float offsetX = this.Size.Width / 2; // میزان جابجایی عرضی منحنی مبدا
            float offsetY = this.Size.Height / 2;// میزان جابجایی ارتفاع منحنی مبدا 

            for (float x = beginX; x <= endX; x += 0.1f)
            {
                float y = (float)( System.Math.Sin( x / xZarib ) * yZarib );

                // با افزایش مقدار ایکس در حلقه فور 
                //مقدار ایگرگ  محاسبه میشود و به این ترتیب
                // مختصات طول و عرض نقطه جدید به دست خواهد آمد

                g.DrawRectangle(System.Drawing.Pens.Red, x + offsetX, -y + offsetY, 1.1f, 1.1f);// ترسیم نقطه
            }
        }
    }
}

 

برنامه‌نویس ++‏C/C‏ - برنامه‌نویس سیستم‌های گرافیکی با استفاده از کتابخانه ‏OpenGL - برنامه‌نویس #‏C و ..‏

2 thoughts on “رسم منحنی سینوسی با سی شارپ

  1. سلام
    این کد شما کار نمی کند اگر احتیاج به تنظیماتی دارد بگویید با ورژن ۲۰۰۸ نوشته ام اما داخل صفحه دیالوگ هیچ طرحی از سینوس مشاهده نمی شود جالب آنکه صفحه سفید هم نشده و به رنگ اصلی اش است

    1. تکه کد اصلی را داخل محیط ویژوال استادیو (با هر ورژنی که دارید) کپی کنید و اجرا بگیرید. هر خطایی داشت بهم بگید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهار × 3 =

Back To Top