Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посторение графика функции y=[ax], целая часть числа 
:(
    Опции темы
Ronnie
  Дата 24.12.2009, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.8.2008

Репутация: нет
Всего: нет



Всем привет.
Нужно написать программу, строящую график функции y=[ax] ( [ ] - целая часть ).
Прикрепил картинку, как получается у меня, и как примерно должен выглядеть график.
Т.е., как вы поняли, нужно убрать вертикальные части графика. Помогите, пожалуйста, исправить ошибку.

Исходный:
Код

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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            Pen pn = new Pen(Color.Black);
            Pen p = new Pen(Color.LightBlue);
            
            for (int i = 3; i <= 46; i += 4)
            {
                g.DrawLine(p, i * 5, 0, i * 5, 230);
                g.DrawLine(p, 0, i * 5, 230, i * 5);
                g.DrawLine(pn, i * 5, 118, i * 5, 112);
                g.DrawLine(pn, 112, i * 5, 118, i * 5);
            }
            g.DrawLine(pn, 115, 0, 115, 230);
            g.DrawLine(pn, 0, 115, 230, 115);
            g.DrawLine(pn, 115, 0, 120, 10);
            g.DrawLine(pn, 115, 0, 110, 10);
            g.DrawLine(pn, 230, 115, 220, 120);
            g.DrawLine(pn, 230, 115, 220, 110);
            Font h = new Font("Arial", 10, FontStyle.Regular);
            g.DrawString("y", h, Brushes.Black, 120, 3);
            g.DrawString("x", h, Brushes.Black, 210, 92);
            double a;
            try
            {
                a = float.Parse(textBox1.Text);
            }
            catch
            {
                a = 1;
            }

            Point[] points = new Point[2300];
            int j = 0;

            
            for (double i = 0; i < points.Length; i += 0.1)
            {
                double y = -20 * Math.Floor(a * (i - 115) / 20) + 115;
                if ((int)y==y)
                {
                    if (j < 2300)
                    {
                        points[j] = new Point((int)i, (int)y);
                        j++;
                    }
                }
            }


            g.DrawLines(pn, points);
        }



        private void Key_press1(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !(char.IsControl(e.KeyChar)))
                if (!((e.KeyChar.ToString() == ",") && (textBox1.Text.IndexOf(",") == -1)))
                    if (!((e.KeyChar.ToString() == "-") && (textBox1.Text.IndexOf("-") == -1)))
                    {
                        e.Handled = true;
                    }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Refresh();
        }
    }
}



Это сообщение отредактировал(а) Ronnie - 24.12.2009, 18:44

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  Untitled_1.jpg 29,69 Kb
PM MAIL   Вверх
serbelyakov
Дата 24.12.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Я тоже так строл графики, используя событие - Paint. Но зачем так мучаться, если есть Microsoft Chart Controls? Если лень или нет времени разбираться смотри - http://www.virtualexpert.ru/chart.htm
PM MAIL WWW   Вверх
Ronnie
Дата 25.12.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.8.2008

Репутация: нет
Всего: нет



мне нужно именно вручную нарисовать, без дополнительных компонентов
PM MAIL   Вверх
Ronnie
Дата 26.12.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 31.8.2008

Репутация: нет
Всего: нет



спасибо, уже разобрался
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.