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

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

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

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

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

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

Уважаемые программисты, в том году вы помогли мне с написанием плеера, за что я вам очень благодарен. В этом году я пробую свои силы в новом конкурсе по ИТ технологиям. Суть моей программы а точнее её идея на данный момент это тренажёр для компьютерной мыши. В моей программе есть всё что надо для начинающий в компьютере (чайников), нажатие левой кнопкой мыши на объект, наведение указателя на объект, нажатие правой кнопкой на объект, перенесения объекта в нужную точку я сделал это пазлом, и так же есть выделение области... Именно в последней составляющей у меня начались проблемы. Задание состоит вот в чём: при нажатии на кнопку "старт" на форме появляется 5 шейпов, они появляются рандомом, 3 зелёный шейпа два красных и один синий, ну это впрочем раскраска не важна, нужно выделить их курсором (выделятся будут так как на рабочем столе мы выделяем ряд ярлыков папок екзешников и тд. протягиванием мыши по экрану при нажатой левой кнопки). Когда мы выделяем шейпы мы должны сравнивать выделенную область с расположениями шейпов и вот те которые вошли в выделенную область должны исчезнуть. Буду благодарен если поможете с этим заданием. Если понадобиться могу скинуть свой код для сравнения. Спасибо за внимание, Александр=)
SashaKrugliak вне форума Ответить с цитированием
Старый 24.10.2012, 17:22   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Шейп - это как я понимаю набор точек. Просто проверьте каждую точку каждого шейпа на предмет нахождения внутри выделенного прямоугольника.Все сводится к тому, что такое "шейп" (в вашем случае)
waleri вне форума Ответить с цитированием
Старый 24.10.2012, 17:27   #3
SashaKrugliak
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 23
По умолчанию

Shape- фигура квадрат круг и тд и тп
SashaKrugliak вне форума Ответить с цитированием
Старый 24.10.2012, 18:16   #4
SashaKrugliak
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 23
По умолчанию

вот мой код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit7.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm7 *Form7;
bool f;
bool f1;
int x,y,x1,x2,y1,y2,x3,x4,x5,x6,y3,y4,y 5,y6,x10,x11,x12,y10,y11,y12,xf,xf1 ,xf2,xf3,xf4,xf5,xf6,yf,yf1,yf2,yf3 ,yf4,yf5,yf6;

TRect r1, r2;
//---------------------------------------------------------------------------
__fastcall TForm7::TForm7(TComponent* Owner)
: TForm(Owner)
{
randomize();
}
//---------------------------------------------------------------------------

void __fastcall TForm7::FormClose(TObject *Sender, TCloseAction &Action)
{
Form1-> Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm7::Image3Click(TObject *Sender)
{
Form1->Show();
Form7->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm7::Image2Click(TObject *Sender)
{
Image1->Enabled=false;

xf=Form7->Width-600;
yf=Form7->Height-300;
x10=random(xf-Shape2->Width-100);
y10=random(yf-Shape2->Height-100);
Shape2->Top = y10;
Shape2->Left = x10;

xf1=Form7->Width-500;
yf1=Form7->Height-250;
x11=random(xf1 - Shape3->Width-90);
y11=random(yf1 - Shape3->Height-90);
Shape3->Top = y11;
Shape3->Left = x11;

xf2=Form7->Width-100;
yf2=Form7->Height-80;
x12=random(xf2 - Shape4->Width-90);
y12=random(yf2 - Shape4->Height-90);
Shape4->Top = y12;
Shape4->Left = x12;

xf3=Form7->Width-200;
yf3=Form7->Height-500;
x3=random(xf3 - Shape5->Width-90);
y3=random(yf3 - Shape5->Height-90);
Shape5->Top = y3;
Shape5->Left = x3;

xf3=Form7->Width-400;
yf3=Form7->Height-200;
x4=random(xf3 - Shape1->Width-90);
y4=random(yf3 - Shape1->Height-90);
Shape1->Top = y4;
Shape1->Left = x4;

xf6=Form7->Width-90;
yf6=Form7->Height;
x6=random(xf6 - Shape6->Width-90);
y6=random(yf6 - Shape6->Height-90);
Shape6->Top = y6;
Shape6->Left = x6;
}
//---------------------------------------------------------------------------


void __fastcall TForm7::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Button!=mbLeft) return;
x=X;
y=Y;
x1=X;
y1=Y;
x2=X;
y2=Y;
f=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm7::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(Button!=mbLeft)
{
f=false;
return;
}
if(f1)
{
if(x<X){r1.Left=x; r1.Right=X;}
else {r1.Left=X; r1.Right=x;}
if(y<Y){r1.Top=y; r1.Bottom=Y;}
else {r1.Top=Y; r1.Bottom=y;}
Form7->Canvas->DrawFocusRect(r2);
}
Form7->Repaint();
f=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm7::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (f)
{
if (x<x1) {r1.Left=x; r1.Right=x1;}
else {r1.Left=x1; r1.Right=x;}
if (y<y1) {r1.Top=y; r1.Bottom=y1;}
else {r1.Top=y1; r1.Bottom=y;}
if (x<x2) {r2.Left=x; r2.Right=x2;}
else {r2.Left=x2; r2.Right=x;}
if (y<y2) {r2.Top=y; r2.Bottom=y2;}
else {r2.Top=y2; r2.Bottom=y;}
f1=true;
Form7->Canvas->DrawFocusRect(r1);
Form7->Canvas->DrawFocusRect(r2);
x1=x2;
y1=y2;
x2=X;
y2=Y;
}

}
SashaKrugliak вне форума Ответить с цитированием
Старый 25.10.2012, 18:11   #5
SashaKrugliak
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 23
По умолчанию

Пожалуйста помогите((( уже 3 неделю с места не сдвигаюсь((
SashaKrugliak вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу для определения принадлежности точки с координатами (х,у) заштрихованной области. Попадание на границу области sanek@zaputan Помощь студентам 5 09.03.2012 12:00
Проверить принадлежит ли точка закрашенной области, границе или находится вне области (код на Pascal) homk Помощь студентам 3 07.09.2011 23:16
Выдиление цветом макс. знач. Slavik Microsoft Office Excel 8 04.05.2009 10:11
выделение области seregaAV110 Мультимедиа в Delphi 3 27.11.2008 21:33
Карта области Dmitriy77 Общие вопросы Delphi 0 23.10.2007 18:46