Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятная особенность в работе кода 
:(
    Опции темы
Angakok
  Дата 19.4.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Имеется эллипс(круг), который ограничен прямоугольником EllipseRect. Требуется заполнить множество S точками, которые принадлежат этому кругу(лежат внутри). Для этого использую следующий код:
Код


  TMyPoint = class
  public
    x: Integer;
    y: Integer;
    constructor Create(tX: Integer; tY: Integer);
  end;
  ...
  constructor TMyPoint.Create(tX: Integer; tY: Integer); 
  begin
    x := tX;  y := tY;
  end;
  ...

  S: DSet;
  EllipseRect: TRect;
  j,k: Integer;
  Rgn: HRGN;
  ...

  Rgn := CreateEllipticRgnIndirect(EllipseRect);
  if Rgn <> 0 then 
    try
      for j := EllipseRect.Top to EllipseRect.Bottom do
        for k := EllipseRect.Left to EllipseRect.Right do
          if PtInRegion(Rgn,j,k) then 
                S.add([TMyPoint.Create(j,k)]);  

    finally
      DeleteObject(Rgn);
    end;
    


Данный код работает верно, только тогда, когда EllipseRect.Top=EllipseRect.Left. 
В чем прикол ???
PM MAIL   Вверх
Yanis
Дата 19.4.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Странный класс... Тогда бы уж ему метод прикрутил првоеряющий, попадает он в прямоугольник или нет.
А PtInRect для EllipseRect работает верно? Когда добьёшься этого, тогда и с PtInRegion будет работать.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 19.4.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Angakok
Дата 20.4.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Цитата(Yanis @ 19.4.2007,  20:31)
Странный класс... Тогда бы уж ему метод прикрутил првоеряющий, попадает он в прямоугольник или нет.
А PtInRect для EllipseRect работает верно? Когда добьёшься этого, тогда и с PtInRegion будет работать.

Все, проблема решена !!!! 
Надо просто поменять месами j,k в цикле. Это же ведь координаты, глаз замылился, не мог увидеть эту ошибку )))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.