Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 31

Заливка пересечения фигур

20.09.2020, 17:03. Показов 4447. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть 2 прямоугольника которые пересекаются как найти их пересечение и выполнить его заливку нажатием на кнопку

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from tkinter import *
 
def click(click_event):
    global prev
    try:
        canvas.create_rectangle(prev.x, prev.y, click_event.x, click_event.y, width=2)
    except:
        prev = click_event
        return
    prev = click_event
 
def move(move_event):
    global prev
    canvas.create_rectangle(prev.x, prev.y, move_event.x, move_event.y, width=2)
    prev = move_event
 
master = Tk()
canvas = Canvas(master, width=600, height=300)
canvas.pack(padx=20, pady=20)
canvas.bind('<Button-1>', click)
mainloop()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2020, 17:03
Ответы с готовыми решениями:

Заливка фигур
Помогите, как залить эту фигуру. Заливает весь фон. uses graphABC; var x0,y0:integer; begin SetWindowSize(800, 800); ...

заливка фигур.
Дали задание нарисовать лодку с парусом. но для полной сдачи сказали чтобы она была раскрашена. Никак не получается залить. помогите кто...

Заливка цветмо фигур
Добрый вечер всем. дали задания самостоятельно разобраться с графическим модулем, как Д/з задали нарисовать Дом и покарись его, как...

3
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
21.09.2020, 12:02
Цитата Сообщение от SHAV Посмотреть сообщение
как найти их пересечение
Нахождение координат пересечения прямоугольника

Добавлено через 2 минуты
Цитата Сообщение от SHAV Посмотреть сообщение
выполнить его заливку нажатием на кнопку
в вашем коде, если продолжать нажимать мышкой, более 2 прямоугольников рисуется
0
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 31
21.09.2020, 12:36  [ТС]
Цитата Сообщение от kapbepucm Посмотреть сообщение
Нахождение координат пересечения прямоугольника
колличество прямоугольников не важно пробую найти кординаты и закрашивать но не выходит не понимаю что не так

Python
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
55
from tkinter import *
 
 
def is_cross(a,b):
    ax1,ay1,ax2,ay2 = a[0],a[1],a[2],a[3]          # прямоугольник А
    bx1, by1, bx2, by2 = b[0], b[1], b[2], b[3]    # прямоугольник B
    # это были координаты точек диагонали по каждому прямоугольнику
 
    # 1. Проверить условия перекрытия, например, если XПA<XЛB ,
    #    то прямоугольники не пересекаются,и общая площадь равна нулю.
    #   (это случай, когда они справа и слева) и аналогично, если они сверху
    #    и снизу относительно друг друга.
    #    (XПА - это  Х Правой точки прямоугольника А)
    #    (ХЛВ - Х Левой точки прямоугольника В )
    #    нарисуй картинку (должно стать понятнее)
 
    xA = [ax1,ax2]  # координаты x обеих точек прямоугольника А
    xB = [bx1,bx2]  # координаты x обеих точке прямоугольника В
 
    yA = [ay1, ay2]  # координаты x обеих точек прямоугольника А
    yB = [by1, by2]  # координаты x обеих точек прямоугольника В
 
    if max(xA)<min(xB) or max(yA) < min(yB) or min(yA) > max(yB):
        return False    # не пересекаются
 
    # 2. Определить стороны прямоугольника образованного пересечением,
    # например,
    # если XПA>XЛB, а XЛA<XЛB, то ΔX=XПA−XЛB
 
    elif max(xA)>min(xB) and min(xA)<min(xB):
        dx = max(xA)-min(xB)
        return True     # пересекаются
    else:
        return True     # пересекаются
'''
def new(N):
    for i in range(len(N) - 1):
        canvas.create_rectangle(xA,  Ya, width=5, fill='red')
'''
def click(click_event):
   global prev
   try:
       canvas.create_rectangle(prev.x, prev.y, click_event.x, click_event.y, width=2)
   except:
       prev = click_event
       return
   prev = click_event
 
 
master = Tk()
canvas = Canvas(master, width=600, height=300)
canvas.pack(padx=20, pady=20)
canvas.bind('<Button-1>', click)
but1 = Button(master, text='ок', command=is_cross );
mainloop()
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
21.09.2020, 16:47
Python
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
from tkinter import *
 
def cross(a,b):
  ax1 = min(a[0], a[2])
  ay1 = min(a[1], a[3])
  ax2 = max(a[0], a[2])
  ay2 = max(a[1], a[3])
  bx1 = min(b[0], b[2])
  by1 = min(b[1], b[3])
  bx2 = max(b[0], b[2])
  by2 = max(b[1], b[3])
  if max(ax1, bx1) < min(ax2, bx2) and max(ay1, by1) < min(ay2, by2):
    canvas.create_rectangle(max(ax1, bx1), max(ay1, by1), min(ax2, bx2), min(ay2, by2), width=5, fill='red')
 
def click(click_event):
  global prev
  global curr_rect
  global prev_rect
  try:
    canvas.create_rectangle(prev.x, prev.y, click_event.x, click_event.y, width=2, fill=None)
    try:
      prev_rect = curr_rect
    except: pass
    curr_rect = [prev.x, prev.y, click_event.x, click_event.y]
  except: pass
  prev = click_event
 
def try_cross():
  global curr_rect
  global prev_rect
  try:
    cross(prev_rect, curr_rect)
  except: pass
 
master = Tk()
canvas = Canvas(master, width=600, height=300)
canvas.pack(padx=20, pady=20)
canvas.bind('<Button-1>', click)
but1 = Button(master, text='ок', command=try_cross);
but1.pack()
mainloop()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2020, 16:47
Помогаю со студенческими работами здесь

Рандомная заливка фигур
Хочу залить каждый ректангл разной кистью, но в итоге все получаются одинаковой заливки. Что не так? for (int i = 0; i &lt;...

Заливка произвольных фигур
Всем здравствуйте. Возникла проблема с заливкой в OpenGL. Использую C#, WF, Tao.OpenGL. Есть сетка, на которой строятся сплайны...

Текстурная заливка фигур в Graphics
Можно ли при рисовании прямоугольника(или любой другой фигуры) с помощью Graphics, залить её не просто каким-то цветом, а текстурой?

Заливка фигур из файла BMP
Помогите пожалуйста, я новичок. Есть bmp файл с неизвестной фигурой, её надо залить другим цветом. Как это реализовать?

Заливка фигур в графическом редакторе
Есть графический редактор на с++. прошу помочь, как реализовать заливку фигур?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru