比例尺python绝望线
Scale python kivy line
我正在尝试使用 kivy 绘制各种线段。这条线看起来真的很小(在屏幕的一端),我想放大它。理想情况下,我想从屏幕中心指定坐标并指定宽度和高度,以便线段显示良好。这是我写的代码:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.graphics import Color, Ellipse, Line
class MyWidget(Widget):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
with self.canvas:
for obstacle in obstacles:
print obstacle
Line(points=[20, 5, 40, 5],width=1)
pass
# add your instruction for main canvas here
class MotionPlanningApp(App):
def build(self):
root = GridLayout(cols=1, padding=5, spacing=1)
root.add_widget(MyWidget())
return root
if __name__ == '__main__':
MotionPlanningApp().run()
在 kivy 中有什么方法可以做到这一点吗?
您可以使用 Translate 指令移动直线(有效移动 canvas 的原点)和 Scale 指令拉伸它。
例如,您可以:
from kivy.core.window import Window
with self.canvas:
self.translate = Translate(Window.width / 2, Window.height / 2.)
如果 window 大小发生变化,您还需要稍后通过绑定一个函数来修改翻译指令。
尽管如此,坐标以屏幕像素为单位,因此该线目前很小,只是因为您只将其设为 20 像素长。
我正在尝试使用 kivy 绘制各种线段。这条线看起来真的很小(在屏幕的一端),我想放大它。理想情况下,我想从屏幕中心指定坐标并指定宽度和高度,以便线段显示良好。这是我写的代码:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.graphics import Color, Ellipse, Line
class MyWidget(Widget):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
with self.canvas:
for obstacle in obstacles:
print obstacle
Line(points=[20, 5, 40, 5],width=1)
pass
# add your instruction for main canvas here
class MotionPlanningApp(App):
def build(self):
root = GridLayout(cols=1, padding=5, spacing=1)
root.add_widget(MyWidget())
return root
if __name__ == '__main__':
MotionPlanningApp().run()
在 kivy 中有什么方法可以做到这一点吗?
您可以使用 Translate 指令移动直线(有效移动 canvas 的原点)和 Scale 指令拉伸它。
例如,您可以:
from kivy.core.window import Window
with self.canvas:
self.translate = Translate(Window.width / 2, Window.height / 2.)
如果 window 大小发生变化,您还需要稍后通过绑定一个函数来修改翻译指令。
尽管如此,坐标以屏幕像素为单位,因此该线目前很小,只是因为您只将其设为 20 像素长。