Задача: построение фигуры по точкам, периметр (C++Builder)

  • Автор темы StydenTo4ka
  • Дата начала
S

StydenTo4ka

Гость
#1
C++:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

#include <fstream.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct Koord{
int x;
int y;
};
const int K=100;
Koord mast[K];
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ {
if(Shift.Contains(ssLeft)){
mast[i].x=X;
mast[i].y=Y;
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->TextOutA(X,Y+5,i+1);
Image1->Canvas->Brush->Color=clRed;
Image1->Canvas->Ellipse(X-5,Y-5,X+5,Y+5);
i++;}
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
{
if(i>0){
for(int j=0;j<i-1;j++){
Image1->Canvas->Pen->Color=clBlue;
Image1->Canvas->MoveTo(mast[j].x,mast[j].y);
Image1->Canvas->LineTo(mast[j+1].x,mast[j+1].y);
}
}
}	 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
{


if(SaveDialog1->Execute()){
ofstream fout(SaveDialog1->FileName.c_str());
for(int j=0;j<i;j++){
fout<<mast[j].x<<" "<< mast[j].y<<"\n";
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
{
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
i=0;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{ {
i=0;
if(OpenDialog1->Execute()){
ifstream fin(OpenDialog1->FileName.c_str());
char s;
int k=0;
while(!fin.eof()){
fin.get(s);
if(s=='\n') k++;}
k=k-1;
Koord *m=new Koord[k];
fin.close();
ifstream fin2(OpenDialog1->FileName.c_str());
for(int j=0;j<k;j++){
fin2>>m[j].x>>m[j].y;
}
fin2.close();
for(int j=0;j<k;j++){
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->TextOutA(m[j].x,m[j].y+5,i+1);
Image1->Canvas->Brush->Color=clRed;
Image1->Canvas->Ellipse(m[j].x-5,m[j].y-5,m[j].x+5,m[j].y+5);
i++;
}
for(int j=0;j<i-1;j++){
Image1->Canvas->Pen->Color=clBlue;
Image1->Canvas->MoveTo(m[j].x,m[j].y);
Image1->Canvas->LineTo(m[j+1].x,m[j+1].y);
}
}
}

}


надо дописать..что бы фигура все таки образовывалась, считать ее периметр..
еще что бы вершины были разных цветов, а при нажатии на специальную кнопку по часовой стрелке цвета вершин менялись

может кто-нибудь помочь?
 

DarkKnight

Well-Known Member
01.08.2010
653
0
33
Владивосток
#2
надо дописать..что бы фигура все таки образовывалась, считать ее периметр..
еще что бы вершины были разных цветов, а при нажатии на специальную кнопку по часовой стрелке цвета вершин менялись

может кто-нибудь помочь?
Помогу, если скинишь исходные файлы с Билдера....
 
S

StydenTo4ka

Гость
#3
давай..буду очень признательна..а куда тебе скинуть??