章节知识点总揽
3.5动手实践——画板
画板主要功能:
1.图像绘制
2.颜色选择
3.线宽选择
4.添加按钮边框
5.清屏
3.5.1 显示画笔轨迹
新建一个main.py文件 ,内容如下:
from kivy.app import App
from kivy.graphics import Line,Color
from kivy.uix.widget import Widget
class DrawCanvasWidget(Widget):
def __init__(self,**kwargs):
super().__init__(**kwargs)
class PaintApp(App):
def build(self):
self.canvas_widget = DrawCanvasWidget()
return self.canvas_widget
if __name__ == '__main__':
PaintApp().run()
新建一个paint.kv文件,其中canvas画布设置背景为白色。因为还需要使用canvas画布在背景上绘画,所以设置背景时,采用canvas.before属性。具体如下:
<DrawCanvasWidget>:
canvas.before:
Color:
rgba:[1,1,1,1]
Rectangle:
pos:self.pos
size:self.size
运行后,生成一个白色背景:
接下来,在DrawCanvasWidget类里,监听屏幕的点击和移动触发事件,这里使用的Kivy中提供的on_touch_down和on_touch_move()方法来实现。最后通过canvas画布把触摸屏幕的轨迹显示出来,即可并通过具体的线宽连城线,修改main.py文件,具体代码如下:
from kivy.app import App
from kivy.graphics import Line,Color
from kivy.uix.widget import Widget
class DrawCanvasWidget(Widget):
def __init__(self,**kwargs):
super().__init__(**kwargs)
#设置默认颜色
self.canvas.add(Color(rgb=[0,0,0]))
self.line_width = 2
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.canvas_widget = DrawCanvasWidget()
return self.canvas_widget
if __name__ == '__main__':
PaintApp().run()
将上述代码添加到DrawCanvasWidget类内,运行main.py文件,在显示的窗口中使用鼠标模拟触摸屏幕,结果如下图所示:
上一篇:基本图形绘制——缩放坐标空间