Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2014, 17:32   #1
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию Построение графика

Не могу сам разобраться с ошибками. Нужно чтобы по нажатию кнопки на форме строился график синуса и косинуса.

Код:
#pragma once
#include <math.h>

namespace рисованиеграфика {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Сводка для Form1
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: добавьте код конструктора
			//
		}

	protected:
		/// <summary>
		/// Освободить все используемые ресурсы.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 

	private:
		/// <summary>
		/// Требуется переменная конструктора.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Обязательный метод для поддержки конструктора - не изменяйте
		/// содержимое данного метода при помощи редактора кода.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(197, 267);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(45, 23);
			this->button1->TabIndex = 0;
			this->button1->Text = L"Go!";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(564, 302);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
			this->ResumeLayout(false);

		}
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 MathGraph();
			 }

	private: void MathGraph()
	{
		const double Pi = 3.14159265;
		double shag = 0.1;
		double scale = 30;
		//размеры поля
		int fillHeight = 100;
		int fillWidth = 500;
		int otstup = 5;

		
		Graphics^ e = this->CreateGraphics();
		SolidBrush^ brush = gcnew SolidBrush(Color::Green);
	    //рисуем поля
		e-> FillRectangle(brush, new Rectangle(otstup,fillHeight,fillWidth));
		e-> FillRectangle(brush, new Rectangle(otstup, 2*otstup + fillHeight,fillWidth,fillHeight));


	    int n = Convert::ToInt32(4*Pi/shag);
		Point* pointSin = new Point[n];
		Point* pointCos = new Point[n];

		int p = 0;

		for (double i = 0; i < 4*Pi; i+= shag)
		{
			pointSin[p] = new Point (Convert::ToInt32(i*scale + otstup), Convert::ToInt32(sin(i)*scale + fillHeight/2 + otstup));
            pointCos[p] = new Point (Convert::ToInt32(i*scale + otstup), Convert::ToInt32(cos(i)*scale + fillHeight/2 + 2*otstup + fillHeight));
			p++;
			delete;
		}
		
		Pen^ pen = gcnew Pen(Color::Black);
		e->DrawCurve(pen,pointSin);
		e->DrawCurve(pen,pointCos);
	}
Изображения
Тип файла: jpg рис1.jpg (121.9 Кб, 145 просмотров)

Последний раз редактировалось Stilet; 23.04.2014 в 21:30.
egrozavr вне форума Ответить с цитированием
Старый 23.04.2014, 17:36   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Проблема в чем? Вы читать не умеете или хотите, чтобы мы вместо вас открывали мсдн и исправляли кол-во параметров у функции?
p51x вне форума Ответить с цитированием
Старый 23.04.2014, 17:43   #3
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Проблема в чем? Вы читать не умеете или хотите, чтобы мы вместо вас открывали мсдн и исправляли кол-во параметров у функции?
читать то умею, но не очень понимаю что собственно нужно исправить. Например ошибки 5 и 6
egrozavr вне форума Ответить с цитированием
Старый 23.04.2014, 18:02   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

У Вас ведь C++/CLI, у него измененный синтаксис для поддержки дотнета.
Объекты дотнета создаются и используются совсем не так, как обычные объекты C++.

Вас ведь уже отсылали к MSDN. Вот пример оттуда (ссылка):


Код:
      // Create pens.
      Pen^ redPen = gcnew Pen( Color::Red,3.0f );
      Pen^ greenPen = gcnew Pen( Color::Green,3.0f );

      // Create points that define curve.
      Point point1 = Point(50,50);
      Point point2 = Point(100,25);
      Point point3 = Point(200,5);
      Point point4 = Point(250,50);
      Point point5 = Point(300,100);
      Point point6 = Point(350,200);
      Point point7 = Point(250,250);
      array<Point>^ curvePoints = {point1,point2,point3,point4,point5,point6,point7};

      // Draw lines between original points to screen.
      e->Graphics->DrawLines( redPen, curvePoints );

      // Create offset, number of segments, and tension.
      int offset = 2;
      int numSegments = 4;
      float tension = 1.0F;

      // Draw curve to screen.
      e->Graphics->DrawCurve( greenPen, curvePoints, offset, numSegments, tension );
Black Fregat вне форума Ответить с цитированием
Старый 23.04.2014, 18:55   #5
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

А как правильно задать этот массив?
Цитата:
Point* pointSin = new Point[n];
Point* pointCos = new Point[n];
egrozavr вне форума Ответить с цитированием
Старый 06.05.2014, 16:49   #6
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию

Разобрался, вот. Может кому поможет.
Код:
#pragma once
#include <math.h>

namespace рисованиеграфика {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Сводка для Form1
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: добавьте код конструктора
			//
		}

	protected:
		/// <summary>
		/// Освободить все используемые ресурсы.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	private: System::Windows::Forms::Label^  label1;
	private: System::Windows::Forms::Label^  label2;
	protected: 

	private:
		/// <summary>
		/// Требуется переменная конструктора.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Обязательный метод для поддержки конструктора - не изменяйте
		/// содержимое данного метода при помощи редактора кода.
		/// </summary>
		void InitializeComponent(void)
		{
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->label2 = (gcnew System::Windows::Forms::Label());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(156, 248);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(74, 42);
			this->button1->TabIndex = 0;
			this->button1->Text = L"Go!";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Location = System::Drawing::Point(3, 3);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(66, 13);
			this->label1->TabIndex = 1;
			this->label1->Text = L"F ( x ) = sin x";
			// 
			// label2
			// 
			this->label2->AutoSize = true;
			this->label2->Location = System::Drawing::Point(3, 101);
			this->label2->Name = L"label2";
			this->label2->Size = System::Drawing::Size(70, 13);
			this->label2->TabIndex = 2;
			this->label2->Text = L"F ( x ) = cos x";
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(407, 302);
			this->Controls->Add(this->label2);
			this->Controls->Add(this->label1);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 MathGraph();
			 }

	private: void MathGraph()
	{
		const double Pi = 3.14159265;
		double shag = 0.1;
		double scale = 30;
		//размеры поля
		int fillHeight = 100;
		int fillWidth = 500;
		int otstup = 5;

		
		Graphics^ e = this->CreateGraphics();
		SolidBrush^ brush = gcnew SolidBrush(Color::White);
	    //рисуем поля
		e-> FillRectangle(brush, otstup,fillHeight,fillWidth,fillHeight);
		e-> FillRectangle(brush, otstup, 2*otstup + fillHeight,fillWidth,fillHeight);

	    int n = Convert::ToInt32(4*Pi/shag);

		array <Point, 1>^ pointSin = gcnew array <Point, 1>(n);
		array <Point, 1>^ pointCos = gcnew array <Point, 1>(n);
	
		int p = 0;

		for (double i = 0; i < 4*Pi; i+= shag)
		{
			pointSin[p] = Point (Convert::ToInt32(i*scale + otstup), Convert::ToInt32(sin(i)*scale + fillHeight/2 + otstup));
            pointCos[p] = Point (Convert::ToInt32(i*scale + otstup), Convert::ToInt32(cos(i)*scale + fillHeight/2 + 2*otstup + fillHeight));
			p++;
		}
		    
		Pen^ pen = gcnew Pen(Color::Black);
		Pen^ pen1 = gcnew Pen(Color::Blue);
		e-> DrawCurve(pen, pointSin);
		e-> DrawCurve(pen1, pointCos);
	}
	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
			 }
};
}
egrozavr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение графика Игорь_С Общие вопросы C/C++ 0 20.10.2012 05:21
Построение графика в VC++ taralesh Помощь студентам 0 24.05.2011 19:18
Построение графика taralesh Visual C++ 0 24.05.2011 19:15
Построение графика Mazepa Помощь студентам 2 09.02.2010 11:07
Построение графика kzmd Общие вопросы Delphi 1 19.01.2009 09:36