нужно повернуть фигуру вокруг начальной точки координат! модифицируйте или напишите нужные строки пожалуйста, вся программа ниже.
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
/*
получить координаты точки, ширину и высоту области для рисования
*/
int x = Edit1->Text.ToInt();
int y = Edit2->Text.ToInt();
int H = PaintBox1->Height;
int W = PaintBox1->Width;
/*
получить ширину и высоту прямоугольника
*/
int x2 = Edit3->Text.ToInt();
int y2 = Edit4->Text.ToInt();
ClearPaintBox(); // очистить область рисования
DrawAxes(W, H); // нарисовать оси
DrawPoint(W, H, x, y); // нарисовать точку
DrawDotLines(W, H, x, y); // нарисовать пунктирные линии к точке
DrawRectangle(W, H, x, y, x2, y2);
}
//---------------------------------------------------------------------------
/*
Рисует пунктирные линии от координатных осей до точки с координатами x, y
W, H - ширина и высота области для рисования
*/
void TForm1::DrawDotLines(int W, int H, int x, int y)
{
PaintBox1->Canvas->Pen->Style = psDot; // рисовать пунктир
PaintBox1->Canvas->MoveTo(W / 2, H / 2 - y);
PaintBox1->Canvas->LineTo(W / 2 + x, H / 2 - y);
PaintBox1->Canvas->MoveTo(W / 2 + x, H / 2);
PaintBox1->Canvas->LineTo(W / 2 + x, H / 2 - y);
PaintBox1->Canvas->Pen->Style = psSolid; // рисовать сплошную
}
//---------------------------------------------------------------------------
/*
Очищает область рисования
*/
void TForm1::ClearPaintBox()
{
PaintBox1->Refresh();
}
//---------------------------------------------------------------------------
/*
Рисует координатные оси
W, H - ширина и высота области для рисования
Оси рисуются с отступом по 5 пикселей от края области рисования
*/
void TForm1::DrawAxes(int W, int H)
{
PaintBox1->Canvas->MoveTo(5, H / 2);
PaintBox1->Canvas->LineTo(W - 5, H / 2);
PaintBox1->Canvas->MoveTo(W / 2, 5);
PaintBox1->Canvas->LineTo(W / 2, H - 5);
}
//---------------------------------------------------------------------------
/*
Рисует точку с координатами x, y
W, H - ширина и высота области для рисования
*/
void TForm1::DrawPoint(int W, int H, int x, int y)
{
x = W / 2 + x;
y = H / 2 - y;
PaintBox1->Canvas->Ellipse(x - 2, y + 2, x + 2, y - 2);
}
//---------------------------------------------------------------------------
/*
Рисует прямоугольник с координатами x, y
W, H - ширина и высота области для рисования
*/
void TForm1::DrawRectangle(int W, int H, int x, int y, int x2, int y2)
{
x = W / 2 + x;
y = H / 2 - y;
x2 = W / 2 + x2;
y2 = H / 2 - y2;
PaintBox1->Canvas->Rectangle(x, y, x2, y2);
}
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.