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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 19:01   #1
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
Восклицание Рисование сектора

У меня не получается нормально нарисовать сектор. Мне нужно рисовать его мышкой. В c_x и c_y я сохраняю центр сектора. Радиус задаю расстоянием от центра сектора к координатам мышки. Но куты построить не получается. Какой то неуправляемый сектор получается. Помогите написать куты по человечески. Я думаю что нада сделать чтобы начальный кут был 0, а конечный определялся мышкой. Тоисть если вести мышкой вокруг центра сектора (против часовой стрелки) с нулевого кута то конечный кут будет увиличиваться. Но записать это у меня не получается. Или может какой то другой способ рисования посоветуйте.
Заранее благодарен.

Код:
Procedure P_sector;
Var
   s_x, s_y: integer;{координаты центра сектора}
   radius: integer; {радиус сектора}

begin
   repeat
   begin
   SetColor(red);
   Rectangle(429, 9, 491, 41);
   SetColor(8);

      Manage_mouse;
      Inter_face;
      if mem <> nil then putimage(100, 50, mem^, 0);
      if mem = nil then Rectangle(100, 50, 460, 400);
      if (r.bx = 1) and (r.cx >= 100) and (r.cx <= 460) and (r.dx >= 50) and (r.dx <= 400) then
      begin
         s_x := r.cx; {начальные координаты сектора}
         s_y := r.dx; {начальные координаты сектора}
         repeat
         begin
            Manage_mouse;
            ClearDevice;
            if mem <> nil then putimage(100, 50, mem^, 0);
            Inter_face;
         radius := Distance_for_circle(s_x, s_y, r.cx, r.dx); //здесь определяется расстояние между центром сектора и координатами курсора.
         SetFillStyle(0,0);
         Sector(s_x, s_y, radius, round((radius / 360) * 100), radius, radius);
         Delay(4444);
         end
         until r.bx <> 1;
         Inc(n);
         With Picture[n] do
         begin
            x_min := s_x;
            y_min := s_y;
            x_max := r.cx;
            y_max := r.dx;
            type_of_pic := 'sector';
         end;
         Get;
      end;
   end
   until r.bx = 2;
   ClearDevice;
end;

Последний раз редактировалось Vistar; 11.05.2009 в 19:04.
Vistar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование Granus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 32 30.06.2009 23:23
Как залить сектора окружности? ai\ekcah^p Помощь студентам 1 05.05.2009 16:49
Рисование Granus Общие вопросы Delphi 2 24.12.2008 07:44
Рисование TriCERATOP Помощь студентам 5 28.11.2008 15:09
Рисование... HunterMan Win Api 10 30.04.2008 23:46