Я хочу линию со стрелкой, которая имеет форму эллипса (то есть половину затмения со стрелкой на любой голове). Используя Vertex методом проб и ошибок, я смог построить его. Пожалуйста, найдите ниже образец. Есть ли гораздо более элегантный способ его построить. В моем случае мне может понадобиться динамически изменять ширину эллипса в будущем.
from kivy.app import App
from kivy.graphics import Line, Color
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.widget import Widget
from kivy.core.window import Window
class MyPaintApp(App):
def build(self):
root = RelativeLayout()
(ix, iy) = (500,400)
(fx, fy) = (500,200)
clr = Color(0.2, 0.2, 1, group='LINE')
wdgt1 = Widget(pos_hint={'center_x':0.5, 'center_y':0.5}, size = (50, 200))
root.add_widget(wdgt1)
(ix,iy) = wdgt1.to_local(ix,iy,relative=True)
(fx,fy) = wdgt1.to_local(fx, fy,relative=True)
vLine = Line(ellipse=(ix, iy + 5, 150, 20 , 0, 180))
vLine2 = Line(points=[ix + 90,iy + 15, ix + 80, iy + 5, ix + 90, iy - 5, ix + 80, iy + 5], width=2, cap='none')
wdgt1.canvas.add(clr)
wdgt1.canvas.add(vLine)
wdgt1.canvas.add(vLine2)
return root
if __name__ == '__main__':
Window.clearcolor = (1, 1, 1, 1)
Window.size = (800,600)
MyPaintApp().run()