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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2012, 01:42   #1
SashaKrugliak
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 23
По умолчанию Квадраты

Есть квадрат на форма... Я его определённую область и мне нужно проверить входит ли этот квадрат в обведённую область... прошу помочь.. буду благодарен
SashaKrugliak вне форума Ответить с цитированием
Старый 29.10.2012, 10:53   #2
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

По моему здесь начало паники и ничего больше... Выделенная область имеет координаты (left right top bottom - Xa Xz Ya Yz); если хотя бы одна вершина квадрата попадает в эту область (условие x>Xa x<Xz y>Ya y<Yz), то квадрат частично или полностью в зоне. Чтоб не путаться с длинными операндами, лучше ввести булеву переменную и по "или" определить ее значение поочередно для всех четырех вершин.
nick42 вне форума Ответить с цитированием
Старый 29.10.2012, 16:53   #3
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

вот и пример с квадратом__ [SPOILER]//---------------------------------------------------------------------------

Код:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
     TPoint p;
     bool push;

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Form1->DoubleBuffered = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if(Button!=mbLeft) return;
  p.x = X;  p.y = Y;
  push=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if(Button!=mbLeft) return;
  Form1->Repaint();
  push=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  TPoint p1, p2, k1,k2,k3,k4;
  bool intro;
  p1.x=p2.x=X; p1.y=p2.y=Y;    
  k1.x=k3.x=Shape1->Left; k2.x=k4.x=Shape1->Left+Shape1->Width ;
  k1.y=k2.y=Shape1->Top;  k3.y=k4.y=Shape1->Top+Shape1->Height ;
  if (p.x < X) p1.x=p.x; else p2.x=p.x;
  if (p.y < Y) p1.y=p.y; else p2.y=p.y;
  if (push) {
   Form1->Repaint();
   Form1->Canvas->DrawFocusRect(Rect(p1.x,p1.y,p2.x,p2.y));
   intro  = k1.x > p1.x && k1.x < p2.x && k1.y > p1.y &&  k1.y < p2.y ;
   intro |= k3.x > p1.x && k3.x < p2.x && k3.y > p1.y &&  k3.y < p2.y ;
   intro |= k2.x > p1.x && k2.x < p2.x && k2.y > p1.y &&  k2.y < p2.y ;
   intro |= k4.x > p1.x && k4.x < p2.x && k4.y > p1.y &&  k4.y < p2.y ;
  }
   if (intro) Caption="Form1  Yes";
   else       Caption="Form1  No";
}
//---------------------------------------------------------------------------[/SPOILER]
Изображения
Тип файла: gif capture2.gif (12.6 Кб, 56 просмотров)

Последний раз редактировалось ACE Valery; 29.10.2012 в 20:29.
nick42 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# графика квадраты Vestars WPF, UWP, WinRT, XAML 1 14.09.2012 21:03
Квадраты и кубы. Renge Помощь студентам 4 13.01.2011 19:45
квадраты sergio11 Общие вопросы .NET 1 05.01.2011 21:55
Квадраты. Xcopy Помощь студентам 5 14.10.2009 17:06
Квадраты Cpluser Общие вопросы C/C++ 8 20.09.2009 17:26