Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача на Borland C++ Builder

16K
02 мая 2006 года
ManIN0x000000
7 / / 02.05.2006
В общих чертах,смысл такой:
Я, на канве формы рисую с помощью Draw()две фигуры
(шара),которые мне затем нужно будет двигать мышкой.Так вот как мне узнать какую фигуру я хочу двигать т.е. куда я навел курсор?
Объясните пожалста!!
Можно и на Borland Delphi.
2
02 мая 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by ManIN0x000000
В общих чертах,смысл такой:
Я, на канве формы рисую с помощью Draw()две фигуры
(шара),которые мне затем нужно будет двигать мышкой.Так вот как мне узнать какую фигуру я хочу двигать т.е. куда я навел курсор?
Объясните пожалста!!
Можно и на Borland Delphi.


например так: когда ты рисуешь фигуры, ты указываешь их координаты. так вот эти координаты надо сохранить, а затем, при обработке, скажем нажатия мыши, брать координаты курсора мыши, брать сохраненные координаты фигур и сравнивать, не попадают ли текущие координаты мыши в пределы одной из фигур.

16K
03 мая 2006 года
ManIN0x000000
7 / / 02.05.2006
Пасибо за идею,я собстенно так и думал,но тогда другой вопрос:
координатами фигуры является только один пиксел
и это будет довольно долго щелкать мышкой по фигуре в поисках его.Поэтому я хотел задать условие такого вида:
if (xy1.x-5<X<xy1.x+5 && xy1.y-5<Y<xy1.y+5)
{
//moving object
}
где X,Y-координаты курсора;xy1-координаты первой фигуры(центр шарика).как бы раздвинув границы.
Но никакого толка!
Можно ли так делать?
И если да то в чем может быть моя ошибка?
Какое другое может быть решение?
2
03 мая 2006 года
squirL
5.6K / / 13.08.2003
ну для шарика так просто не вычислишь. насколько я помню свои опыты с билдером, координаты окружности определяются координатами прямоугольника, в которого данная окружность вписана. плясать надо от этого.
1
03 мая 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by squirL
ну для шарика так просто не вычислишь. насколько я помню свои опыты с билдером, координаты окружности определяются координатами прямоугольника, в которого данная окружность вписана. плясать надо от этого.


Если фигура простая то есть функции позволяющие определить в границах фигуры или нет находится точка. Точно название не помню - давно просто этим не занимался.
Эти задачи решаются достаточно часто - так что информацию найти можно. Мне в частности попадалось это в книге "Програмирование Windows98. Том 2" - там подробно рассматриваются алгоритмы нахождения положения точки, границ и т.д. "Программирование графики под Виндоус" - автора уже не помню - в инете есть. Так же много инфы можно найти на сайтах по программированию игр - для этих задач - это стандарт.

Что бы определить площадь за которую ты можешь двигать тебе надо иметь и проверять 3 параметра, например:

 
Код:
if(X > Left&& X < Lеft+Diametr && Y > Top&& Y < Top+Diametr){
}

Где Left и Top Соответственно крайне левое и крайне верхнее значение. Но при этом не забывай учитывать что часть точек будет лежать за пределами круга.

Кстати, рисование фигур - это обязательное условие - или можно использовать уже готовые билдеровские?
16K
03 мая 2006 года
ManIN0x000000
7 / / 02.05.2006
Пасиба за советы!
По ходу решения, задача определять координаты отпала сама собой :)
16K
04 мая 2006 года
ManIN0x000000
7 / / 02.05.2006
еще один вопросик:
у меня имеется примерно такой код:
 
Код:
for(int i=2;i<=10;i++)
    {
     if (xy?.x!=0)
       {
        Canvas->MoveTo(xy1.x,xy1.y);
        Canvas->LineTo(xy?.x,xy?.y);
       }
    }

как мне сделать так чтобы в места где стоят вопросы
добавлялось значение i?
2
04 мая 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by ManIN0x000000
еще один вопросик:
у меня имеется примерно такой код:
 
Код:
for(int i=2;i<=10;i++)
    {
     if (xy?.x!=0)
       {
        Canvas->MoveTo(xy1.x,xy1.y);
        Canvas->LineTo(xy?.x,xy?.y);
       }
    }

как мне сделать так чтобы в места где стоят вопросы
добавлялось значение i?


а никак :)

324
04 мая 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by ManIN0x000000
еще один вопросик:
у меня имеется примерно такой код:
 
Код:
for(int i=2;i<=10;i++)
    {
     if (xy?.x!=0)
       {
        Canvas->MoveTo(xy1.x,xy1.y);
        Canvas->LineTo(xy?.x,xy?.y);
       }
    }

как мне сделать так чтобы в места где стоят вопросы
добавлялось значение i?



тебе надо создать массив xy, тогда

 
Код:
for(int i=2;i<=10;i++)
    {
     if (xy.x!=0)
       {
        Canvas->MoveTo(xy1.x,xy1.y);
        Canvas->LineTo(xy.x,xy.y);
       }
    }
16K
04 мая 2006 года
ManIN0x000000
7 / / 02.05.2006
Пасиба,врубился!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог