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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2009, 11:20   #1
choknutii
 
Регистрация: 21.07.2009
Сообщений: 3
Сообщение поворот изображения на форме

Здравствуйте уважаемые программисты , у меня возникла проблема поворота изображения на заданый угол , дело в том что в принцепе теоретически понятно как делать , в консоли сделал вот код:
Код:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include<conio.h>
#include<stdio.h>
#include <windows.h>
class PGF{
double a[4][2], n, ax, ay, axn,ayn,axn1,axn2,ayn1,ayn2, cx, cy,  i;
double r;
int nf;
public:
void Vibor();
void Vvod();
void Perem();
void Izm_raz();
void Vrash();
void Vivod();
};
void main()
{ PGF a;
clrscr();
a.Vibor();
a.Vvod();
a.Vivod();
a.Perem();
a.Vivod();
a.Izm_raz();
a.Vivod();
a.Vrash();
a.Vivod();
}
//выбор фигуры
void PGF::Vibor()
{
cout<<endl; 
cout<<"Выберите фигуру: круг-1, квадрат-2, прямоугольник-3";
cout<<endl;
cin>>nf;
}
//создание
void PGF::Vvod()
{
if (nf==1)
{ cout<<endl;cout<<"Введите параметры круга \n";
cout<<" cx=";cin>>cx;cout<<" cy=";cin>>cy;cout<<" r=";cin>>r;
cout<<endl;
}
if (nf==2)
{
cout<<endl;cout<<"Введите параметры квадрата ";cout<<endl;
cout<<"Координаты центра:\n cx=";cin>>cx;
cout<<" cy=";cin>>cy;
cout<<"Вектор от центра до вершины:\n";
cout<<" ax=";cin>>ax;cout<<" ay=";cin>>ay;
}
if (nf==3)
{
cout<<endl;cout<<"Введите параметры прямоугольника";cout<<endl;
cout<<"Координаты центра:\n cx=";cin>>cx;
cout<<" cy=";cin>>cy;
cout<<"Вектор от центра до вершины:\n";
cout<<" ax=";cin>>ax;cout<<" ay=";cin>>ay;
}
}
//вывод
void PGF::Vivod()
{
cout<<"Параметры фигуры";
cout<<endl;
if (nf==1)
{cout<<endl;cout<<"cx="<<cx<<" cy="<<cy<<" r="<<r;
cout<<endl;
}
if (nf==2)
{
cout<<endl;
cout<<"cx="<<cx<<" cy="<<cy<<" ax="<<ax<<" ay="<<ay;
cout<<endl;cout<<endl;
}
if (nf==3)
{
cout<<endl;
cout<<"cx="<<cx<<" cy="<<cy<<" ax="<<ax<<" ay="<<ay;
cout<<endl;
}
}
//перемещение на плоскости
void PGF::Perem()
{ int sx,sy;
cout<<"Введите координаты смещения фигуры ";
cout <<endl;
cout<<"Смещение по X= ";cin>>sx;
cout<<"Смещение по Y= ";cin>>sy;
cx=cx+sx;cy=cy+sy;
ax=ax+sx;ay=ay+sy;
}
//изменение размеров
void PGF::Izm_raz()
{
double s,Ax,Ay,Bx,By,Cx,Cy,k,d,AB,BC;
if (nf==1)
{
cout<<"Коэффициент изменения радиуса круга= ";
cout<<endl;
cin>>k;
r=r*k;
}
if (nf==2)
{
cout<<"Коэффициент изменения расстояния до вершины квадрата= ";
cout<<endl;
cin>>k;
ax=ax-cx;
ay=ay-cy;
ax=ax*k;
ay=ay*k;
ax=ax+cx;
ay=ay+cy;
}
if (nf==3)
{
cout<<"Коэффициент изменения расстояния до вершины прямоугольника= ";
cout<<endl;
cin>>k;
ax=ax-cx;
ay=ay-cy;
ax=ax*k;
ay=ay*k;
ax=ax+cx;
ay=ay+cy;
}
}
void PGF::Vrash()
{ double f,co,si;
cout<<"Угол поворота фигуры ";
cin>>f;
f=f*M_PI/180;
if(nf==2 || nf==3)
{
ax=ax-cx;
ay=ay-cy;
co=cos(f);
si=sin(f);
axn1=ax*co;
axn2=ay*si;
axn=axn1-axn2;
ayn1=ax*si;
ayn2=ay*co;
ayn=ayn1+ayn2;
ax=axn+cx;
ay=ayn+cy;
}
}
а на форму удалось только нанести изображения и систему координат ,
а как сделать чтобы в edit водить нужное значение поворота и при нажатии кнопки поворачивалось изображение пока не понятно , и как переделать код из консоли для формы а то форму начал изучать читая книгу Архангельского(по многим советам) и пока освоил тока основу
Изображения
Тип файла: jpg Безымянный.jpg (15.6 Кб, 128 просмотров)

Последний раз редактировалось Sazary; 21.07.2009 в 19:29.
choknutii вне форума Ответить с цитированием
Старый 21.07.2009, 11:20   #2
choknutii
 
Регистрация: 21.07.2009
Сообщений: 3
По умолчанию

код формы с реализацией фигур и системы координат:
Код:
#include <vcl.h>
#pragma hdrstop
 #include <math.h>
#include "Unitpractica.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
float pi = 3.14159265358979323846;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::RadioButton4Click(TObject *Sender)
{
 Image1->Canvas->Ellipse(220, 220, 300, 300);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton3Click(TObject *Sender)
{
    Image1->Canvas->MoveTo(300, 200);
    Image1->Canvas->LineTo(300, 300);
    Image1->Canvas->LineTo(400, 200);
    Image1->Canvas->LineTo(300, 200);               
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
Image1->Canvas->Rectangle(210, 220, 310, 300);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
Image1->Canvas->MoveTo(250,290);
 Image1->Canvas->LineTo(390, 280);      
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
       Image1->Canvas->MoveTo(200, 100);
 Image1->Canvas->TextOutA(193, 130,"Y");
    Image1->Canvas->LineTo(200,410 );
    Image1->Canvas->TextOutA(195,400,"0" );
     Image1->Canvas->LineTo(400, 400);
   Image1->Canvas->TextOutA(400, 400,"X");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Exit(TObject *Sender)
{
Image1->Picture=NULL;
Image1->Canvas->MoveTo(200, 100);
 Image1->Canvas->TextOutA(193, 130,"Y");
    Image1->Canvas->LineTo(200,410 );
    Image1->Canvas->TextOutA(195,400,"0" );
     Image1->Canvas->LineTo(400, 400);
   Image1->Canvas->TextOutA(400, 400,"X");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton2Exit(TObject *Sender)
{
Image1->Picture=NULL;
Image1->Canvas->MoveTo(200, 100);
 Image1->Canvas->TextOutA(193, 130,"Y");
    Image1->Canvas->LineTo(200,410 );
    Image1->Canvas->TextOutA(195,400,"0" );
     Image1->Canvas->LineTo(400, 400);
   Image1->Canvas->TextOutA(400, 400,"X");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton3Exit(TObject *Sender)
{
Image1->Picture=NULL;
Image1->Canvas->MoveTo(200, 100);
 Image1->Canvas->TextOutA(193, 130,"Y");
    Image1->Canvas->LineTo(200,410 );
    Image1->Canvas->TextOutA(195,400,"0" );
     Image1->Canvas->LineTo(400, 400);
   Image1->Canvas->TextOutA(400, 400,"X");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton4Exit(TObject *Sender)
{
Image1->Picture=NULL;
Image1->Canvas->MoveTo(200, 100);
 Image1->Canvas->TextOutA(193, 130,"Y");
    Image1->Canvas->LineTo(200,410 );
    Image1->Canvas->TextOutA(195,400,"0" );
     Image1->Canvas->LineTo(400, 400);
   Image1->Canvas->TextOutA(400, 400,"X");
}

Последний раз редактировалось Sazary; 21.07.2009 в 19:29.
choknutii вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поворот изображения Пепел Феникса Мультимедиа в Delphi 1 21.06.2009 19:53
Вращение (поворот на заданный угол) векторного изображения Македонский Мультимедиа в Delphi 6 26.02.2009 21:19
Поворот изображения на заданный угол. taller07 Мультимедиа в Delphi 4 28.11.2008 14:01
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
timage, поворот ERASERROR Мультимедиа в Delphi 1 05.02.2008 12:10