Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 11
1

Подушка 2: Наследование (как добавить толщину линии?)

06.05.2020, 17:55. Показов 761. Ответов 2

Подушка 2: Наследование (как добавить толщину линии?)
По мнению Василия, вы уже точно знаете всё о библиотеке PIL.
Сейчас его больше интересует, насколько хорошо вы изучили работу с пакетом ImageDraw.
Как вам известно, этот пакет предназначен для отрисовки на изображении различных примитивов, однако Василию не хватает функциональности.
Он просит вас расширить класс PIL.ImageDraw.ImageDraw и создать его наследника ImageDrawer.
От нового класса требуется реализовать два новых метода: circle(center, radius, fill, outline, width) и square(xy, side, fill, outline, width).
Метод circle предназначен для отрисовки окружности с заданным центром (параметр center в форме кортежа из двух чисел) и радиусом (параметр radius в виде одного числа).
Метод square предназначен для отрисовки квадрата с заданным верхним левым углом (параметр xy в форме кортежа из двух чисел) и стороной (параметр side в виде одного числа).
Параметры fill (цвет заливки), outline (цвет границы), width (толщина границы) у обоих методов являются необязательными. Задайте им значение по умолчанию «в духе» PIL.ImageDraw.ImageDraw.
Решение должно содержать только требуемый класс, ничего вызывать не надо.




Помогите пожалуйста не могу добавить толщину! Уже не один час пытаюсь решить!

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
from PIL import ImageDraw, Image
 
 
class MyImageDraw(ImageDraw.ImageDraw):
    def circle(self, center, radius, fill = None, outline = None, width = None):
        x, y = center
        
        x0 = x - radius
        y0 = y - radius
        x1 = x + radius
        y1 = y + radius
        coords = [x0, y0, x1, y1]
        self.ellipse((coords), fill=fill, outline=outline)
 
    def square(self, xy, side, fill=None, outline=None, width=None):
        x, y = xy
        x0 = x - side
        y0 = y - side
        x1 = x + side
        y1 = y + side
        coords = [x0, y0, x1, y1]
        self.rectangle((coords), fill=fill, outline=outline)
 
 
def picture(file_name, width, height):
    im = Image.new('RGB', (width, height))
    drawer = MyImageDraw(im)
    drawer.circle((256, 256), 100)
    drawer.square((256, 256), 100)
    im.save(file_name)
picture('kor.jpg', 512, 512,)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2020, 17:55
Ответы с готовыми решениями:

Как изменить толщину линии?
uses graphABC; var a,b,h,xc,yc,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5:integer; x,m,u,u1,r:real; ...

Как изменить толщину линии?
Никак не могу поменять толщину линий... e->Graphics->DrawLine(System::Drawing::Pens::Red, xpmin,...

Как изменить толщину линии (в fplot)?
Как изменить толщину линии при построении через fplot?

Как поменять толщину линии в Shape рандомным образом?
как поменять толщину линии в Shape рандомным образом вот код : unit Unit1; interface uses...

2
625 / 422 / 189
Регистрация: 22.03.2020
Сообщений: 996
06.05.2020, 18:35 2
Цитата Сообщение от NikiforovDV Посмотреть сообщение
не могу добавить толщину
А куда её нужно добавить?
0
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 11
07.05.2020, 07:21  [ТС] 3
Уже сделал.
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
from PIL import ImageDraw, Image
class MyImageDraw(ImageDraw.ImageDraw):
    def circle(self, center, radius, fill = None, outline = None, width = None):
        x, y = center
        
        x0 = x - radius
        y0 = y - radius
        x1 = x + radius
        y1 = y + radius
        if width is not None:
            for i in range(width):
                coords = [x0, y0, x1, y1]
                self.ellipse((coords), fill=fill, outline=outline)
                x0 = x0 + 1
                y0 = y0 + 1
                x1 = x1 - 1
                y1 = y1 - 1
        else:
            coords = [x0, y0, x1, y1]
            self.ellipse((coords), fill=fill, outline=outline)
            
 
    def square(self, xy, side, fill=None, outline=None, width=None):
        x, y = xy
        x0 = x - side
        y0 = y - side
        x1 = x + side
        y1 = y + side
        if width is not None:
            for i in range(width):
                coords = [x0, y0, x1, y1]
                self.rectangle((coords), fill=fill, outline=outline)
                x0 = x0 + 1
                y0 = y0 + 1
                x1 = x1 - 1
                y1 = y1 - 1
        else:
            coords = [x0, y0, x1, y1]
            self.rectangle((coords), fill=fill, outline=outline)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2020, 07:21

Как в компоненте TChar можно изменить толщину линии (Series) типа Arrow (стрелка)?
Добрый день! Как в компоненте TChar можно изменить толщину линии (Series) типа Arrow (стрелка)? ...

Изменить толщину линии
Как можно изменить толщину линии?

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

Изменять толщину линии в numericUpDown
Есть задание изменять толщину линии эллипса в соответствии со значением, введённым в numericUpDown.

Изменить толщину и цвет линии
Привет любимый форум,продолжаю делать работу с граф.редактором. Возник вопрос,как изменить цвет и...

Придать линии цвет, толщину, тип
Вот программа по рисованию линии в паскале. Что надо добавить в программу, чтобы придать линии...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru