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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2013, 20:34   #1
Kolinishe
 
Регистрация: 18.12.2013
Сообщений: 8
По умолчанию поворот фигуры вокруг начальной точки координат (C++)

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

Код:
//---------------------------------------------------------------------------

#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]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Kolinishe; 25.12.2013 в 00:05. Причина: переоформление кода, спасибо Serge_Bliznykov
Kolinishe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот фигуры Pascal stas45rus Помощь студентам 10 13.05.2012 12:43
Поворот фигуры firefox0013 Общие вопросы C/C++ 3 30.11.2011 18:36
Поворот изображения вокруг своей оси во время движения по кругу вокруг центра AsaDorius Помощь студентам 1 15.12.2010 21:57
поворот точки вокруг оси NiCola999 Общие вопросы C/C++ 5 13.08.2010 13:19
Поворот каждого обьекта вокруг своей оси. vaflea Общие вопросы C/C++ 0 01.06.2010 14:18