Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.08.2016
Сообщений: 8

Реакция на нажатие левой кнопки мыши

20.06.2020, 11:25. Показов 986. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно сделать так, чтобы в одном секторе при нажатии левой кнопки мыши, у меня рисовались круги, а в другом секторе - прямоугольники. Я попробовал это сделать, но, у меня снова ничего не вышло. Рисует на части первого сектора круги, на на другой части этого же сектора - прямоугольники. А нужно, чтобы одной фигурой был заполнен целый сектор. Помогите, пожалуйста, разобраться. Скорее всего, ошибка, думаю, в 4 строчке, но я уже разными способами пробовал ее изменять, но, программа так корректно и не заработала.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses GraphABC;
procedure MouseDown(x, y, mousebutton: integer);
begin
    if (x/y)>=((WindowWidth-1) / (WindowHeight-1)) then
      begin
          SetPenColor(clYellow);
              Circle(x-15, y-15,30);
            end
     else
      begin
      SetPenColor(clRed);
        rectangle(x-15,y-15,x+30,y+30);
      end;
end;  
begin
     CenterWindow;
     Line(Window.Width-1, 0, 0,Window.Height-1);
     SetFontSize(25);
     TextOut(100,320, 'I');
     TextOut(600,120, 'II');
     OnMouseDown := MouseDown;
 end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2020, 11:25
Ответы с готовыми решениями:

Реакция на нажатие клавиш мыши
У меня есть программа, на которой есть 4 сектора. При нажатии на каждый сектор вылезает надпись. Мне нужно разделить на 2 сектора(по...

Ограничить передвижение курсора мыши левой нижней четвертью экрана.При нажатие левой клавиши мыши выключить индикатор NumLock(+Звук),при нажатие право
Не могу решить подскожите кто знает.(Ограничить передвижение курсора мыши левой нижней четвертью экрана.При нажатие левой клавиши мыши...

Нажатие левой кнопки мыши
Как только не пробовал, но чо-то не могу условие такое написать. Help me! За ранее благодарен

4
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
20.06.2020, 12:17
Копайте в сторону графиков прямых линий. Если при заданном x, y оказывается меньше чем y вашей линии при том же x - значит точка находится в нижнем секторе.

Остаётся только откопать/вывести формулы, сократить их и вставить в код.
Ну или можете дальше рандомно менять формулу, надеясь что заработает, не выведя её заранее. В шахматах тоже можно победить, делая случайные ходы. Теоретически.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.06.2020, 12:36
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure MouseDown(x, y, mousebutton: integer);
begin
if (mousebutton=1)and(x<windowwidth-y) then
 begin
  SetPenColor(clBlue);
  Circle(x-15, y-15,30);
 end
else
 begin
  SetPenColor(clRed);
  rectangle(x-15,y-15,x+30,y+30);
 end;
end;
0
0 / 0 / 0
Регистрация: 17.08.2016
Сообщений: 8
20.06.2020, 13:41  [ТС]
Сделал, как вы сказали, но мне нужно еще, чтобы элементы программы подгонялись под новый размер окна (если его растянуть, развернуть и т.д), и тут в большей части нижнего сектора рисует круги. Кстати, при штатном размере (как только запускаешь в Abc.Net программу на выполнение), тоже не так рисует( Может, сможете что-нибудь здесь подсказать?)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
uses GraphABC;
type
  Figure = record
    x, y: integer;
    c: Color;
    constructor(pix, piy: integer; pcol: Color);
    begin
      x := pix; y := piy; c := pcol;
    end;
  end;
var
  L: List<Figure> := new List<Figure>;
 
procedure PaintFigure(F: Figure);
begin
  SetPenColor(F.c);
  with F do
begin
    if x<windowwidth-y then
      begin
          SetPenColor(clYellow);
              Circle(x-15, y-15,20);
            end
     else
     begin
        rectangle(x-15,y-15,x+15,y+15);
      end
      end;
end;  
 
procedure MouseDown(x, y, mousebutton: integer);
begin
  var fig := new Figure(x, y, clRandom);
  PaintFigure(fig);
  L.Add(fig);
end;
 
procedure DoResize;
begin
     ClearWindow;
     SetPenColor(clBlack);
     Line(Window.Width-1, 0, 0,Window.Height-1);
     OnMouseDown := MouseDown;
  
  foreach var fig in L do
    PaintFigure(fig);
end;
 
begin
  CenterWindow;
  DoResize;
  OnMouseDown := MouseDown;
  OnResize := DoResize;
end.
Миниатюры
Реакция на нажатие левой кнопки мыши   Реакция на нажатие левой кнопки мыши  
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
20.06.2020, 14:02
Вам написали
Цитата Сообщение от Sun Serega Посмотреть сообщение
Копайте в сторону графиков прямых линий. Если при заданном x, y оказывается меньше чем y вашей линии при том же x - значит точка находится в нижнем секторе.
Добавлено через 13 минут
Например так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses GraphABC;
var w,h:integer;
procedure MouseDown(x, y, mousebutton: integer);
var k:real;
begin
k:=h/w;
if (mousebutton=1)and(y<h-k*x) then
 begin
  SetPenColor(clBlue);
  Circle(x-15, y-15,30);
 end
else
 begin
  SetPenColor(clRed);
  rectangle(x-15,y-15,x+30,y+30);
 end;
end;  
begin
setwindowsize(700,400);  
w:=windowwidth;
h:=windowheight;
CenterWindow;
Line(Window.Width-1, 0, 0,Window.Height-1);
SetFontSize(25);
     TextOut(100,320, 'I');
     TextOut(600,120, 'II');
     OnMouseDown := MouseDown;
 end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2020, 14:02
Помогаю со студенческими работами здесь

Нажатие левой кнопки мыши
господа создаю основное окно , а затем с этим же классом создаю дочернее окно вот так #include &lt;windows.h&gt; #define BTN 0x0000012 ...

Нажатие левой кнопки мыши
Решил написать скрипт для игры. Чтобы скрипт сам нажимал левую кнопку мыши, когда прицел будет красным (по стандарту он белый). ...

Самостоятельное нажатие левой кнопки мыши
Добрый день друзья. Весь интернет прошерстил, так и не смог найти решение. Проблема такова, что после переустоновки винды(раньше стояла 8,...

Отловить нажатие левой кнопки мыши
Всем привет, я совсем новичок, пытаюсь отловить событие - нажатие кнопок мыши, но к сожалению не получается. Нашёл кучу косвенных...

Программное нажатие левой кнопки мыши
Господа, кто нить подскажет как можно заставить программу нажимать левую кнопку мыши. Пробовал делать так: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru