kivy画板

from kivy.app import App
from kivy.graphics import Line, Color   # 引入绘图线条,颜色
from kivy.uix.widget import Widget    # 引入控件
from kivy.lang import Builder
from kivy.utils import get_color_from_hex

Builder.load_string("""
#:import C kivy.utils.get_color_from_hex
<DrawCanvasWidget>:
    canvas.before:
        # 最下面纸的颜色
        Color:
            rgba:[1,1,1,1]
        # 形状
        Rectangle:
            # 位置
            pos:self.pos
            # 大小
            size:self.size
    Button:
        background_color:C('#FF0000')
        text:'1'

""")


# 布局类
class DrawCanvasWidget(Widget):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 1.设置默认颜色,在画布中加入颜色  16进制写法    # 画笔的颜色
        new_color = get_color_from_hex('#FF0000')
        self.canvas.add(Color(*new_color))
        # 1.设置默认颜色,在画布中加入颜色  十进制写法传入0到1的浮点数
        # self.canvas.add(Color(rgb=[0,0,0]))

        self.line_width = 1   # 线宽

    # 触摸显示轨迹
    def on_touch_down(self, touch):
        if Widget.on_touch_down(self,touch):
            return

        with self.canvas:

            touch.ud['current_line'] = Line(points=(touch.x,touch.y),width=self.line_width)

    # 连线
    def on_touch_move(self, touch):
        if 'current_line' in touch.ud:
            touch.ud['current_line'].points += (touch.x,touch.y)


# 应用类
class PaintApp(App):
    def build(self):
        self.draw_canvas_widget = DrawCanvasWidget()
        return self.draw_canvas_widget


if __name__ == '__main__':

    PaintApp().run()

 

posted @ 2021-05-27 11:20  trysocket  阅读(81)  评论(0编辑  收藏  举报