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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2007, 10:52   #1
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию График на С++ Builder

Ребят, у меня была на сделана задача на Delphi где нужно было по 2 радиусам введённым в Edit1 и 2 построить овал на Image. Теперь ту же задачу нужно переделать на C++ Builder. Так вот начав делать тут же запоролся..
Вот код 2-х процеду для работы с графиком на Delphi:

Код:
procedure TForm1.Timer1Timer(Sender: TObject); // Построение эллипса
var x,y:real;
begin
if t<=6.29 then
begin
x:=r1*cos(t);
y:=r2*sin(t);
Image1.Canvas.Pixels[150+round(10*x), 120+round(10*y)]:=colorbox1.selected;
t:=t+0.02;
end
else
timer1.Enabled:=false;
end;

procedure TForm1.Button4Click(Sender: TObject); // Кнопка "Построить график" оп заданной функции в TTimer1.
begin
timer1.Enabled:=true;
timer1.Interval:=10;
t:=0;
r1:=strtofloat(edit3.Text);
r2:=strtofloat(edit4.Text);
image1.Canvas.MoveTo(50,120);
image1.Canvas.LineTo(250,120);
image1.canvas.LineTo(245,118);
image1.canvas.LineTo(245,122);
image1.canvas.LineTo(250,120);
image1.Canvas.MoveTo(150,30);
image1.Canvas.LineTo(150,220);
image1.Canvas.TextOut(152,122,'0');
image1.Canvas.TextOut(252,122,'X');
image1.Canvas.TextOut(152,32,'Y');
end;
Теперь пишу то что успел набить на С++:

Код:
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
float x,y;
{
if (t<=6.29)
{
x=r1*cos(t);
y=r2*sin(t);
Image1->Canvas->Pixels[150+round(10*x), 120+round(10*y)]=ColorBox1->Selected;
t=t+0.02;
}
{
else
{
Timer1->Enabled=false;
}

void __fastcall TForm2::Button1Click(TObject *Sender)
{
Timer1->Enabled=true;
Timer1->Interval=10;
t=0;
r1=StrToFloat(Edit1->Text);
r2=StrToFloat(Edit2->Text);
Image1->Canvas->MoveTo(50,120);
Image1->Canvas->LineTo(250,120);
Image1->Canvas->LineTo(245,118);
Image1->Canvas->LineTo(245,122);
Image1->Canvas->LineTo(250,120);
Image1->Canvas->MoveTo(150,30);
Image1->Canvas->LineTo(150,220);
Image1->Canvas->TextOut(152,122,'0');
Image1->Canvas->TextOut(252,122,'X');
Image1->Canvas->TextOut(152,32,'Y');
}
Короче вот... Ошибку выдаёт на "round" в процедуре таймера. Воспользовался помощью, ничего там не понял ) На всякий случай прикрепил к этому посту скрин, где видно какие объекты на форме..

Помогите мне это решить пожалуйста..
POPOV вне форума Ответить с цитированием
Старый 18.11.2007, 11:42   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Ну, так C это не Delphi
#include <math.h>
floor(number)
или
ceil(number)
_Dmitry вне форума Ответить с цитированием
Старый 18.11.2007, 11:57   #3
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию

Да я понимаю что С не Delphi, но я попросил помочь исправить )
Вот в этой строке пишу ceil или floor:
Image1->Canvas->Pixels[150+ceil(10*x), 120+(ceil(10*y)]=ColorBox1->Selected;

Выдаёт ошибку: [C++ Error] Unit3.cpp(67): E2193 Too few parameters in call to '_fastcall TCanvas::SetPixel(int,int,TColor)'

Чего не хватает ?
POPOV вне форума Ответить с цитированием
Старый 18.11.2007, 12:04   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Image1->Canvas->Pixels[150+ceil(10*x)][120+ceil(10*y)]=ColorBox1->Selected;
_Dmitry вне форума Ответить с цитированием
Старый 18.11.2007, 15:24   #5
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию

Большое спасибо, график заработал !

У меня ещё маленикий вопрос и чтоб новую тему не создавать, запостю тут.

У меня есть процедура которая выводит на Image текст со случайным шрифтом, стилем и т.д.

Вот строка в которой выдаёт ошибку:

Image2->Canvas->TextOut(random(Image2->Width),random(Image2->Height), 'Работа 11 ');

вот текст ошибки:

[C++ Error] Unit3.cpp(118): E2129 Character constant too long (or empty)

Шде тут надо чё подправить ? В Delphi работало.
POPOV вне форума Ответить с цитированием
Старый 18.11.2007, 15:59   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Image2->Canvas->TextOutA(random(Image2->Width),random(Image2->Height), "Работа 11 ");
_Dmitry вне форума Ответить с цитированием
Старый 18.11.2007, 16:22   #7
POPOV
Форумчанин
 
Аватар для POPOV
 
Регистрация: 26.10.2007
Сообщений: 124
По умолчанию

Ещё раз спасибо ! Всё работает.
POPOV вне форума Ответить с цитированием
Старый 05.03.2011, 16:07   #8
Feel401
Новичок
Джуниор
 
Регистрация: 05.03.2011
Сообщений: 2
По умолчанию

Слушай не можешь мне на мыло кинуть исходник???ЕСЛИ ОН ОСТАЛСЯ???
Feel401 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График функции в C++ Builder.. ПОМОГИТЕ! Cyberbest Помощь студентам 2 25.06.2009 21:06
График Droid Общие вопросы Delphi 6 25.05.2008 23:40
график Димарик Помощь студентам 2 30.06.2007 09:12
График xsexrexga Общие вопросы Delphi 1 27.01.2007 21:26