官术网_书友最值得收藏!

Chapter 2. Graphics – the Canvas

Any Kivy Widget contains a Canvas object. A Kivy Canvas is a set of drawing instructions that define the graphical representation of Widget.

Tip

Be careful with the name because it tends to be confusing! A Canvas object is not what we draw on (for example, as it is in HTML5); it is a set of instructions to draw in the coordinate space.

The coordinate space refers to the place in which we draw. All the Kivy widgets share the same coordinate space, and a Canvas instance, the instructions to draw on it. A coordinate space is not restricted to the size of the window or the application screen, which means that we can draw outside of the visible area.

We will discuss how to draw and manipulate the representation of the widgets through the instructions we add to the Canvas object. Here is a list of the most important skills that we will cover:

  • Drawing basic geometric shapes (straight and curve lines, ellipses, and polygons) through vertex instructions
  • Using colors, and rotating, translating, and scaling the coordinate space through the context instructions
  • The difference between vertex and context instructions and how they complement each other
  • The three different sets of instructions of Canvas that we can use to modify the order of execution of the graphics instructions
  • Storing and retrieving the current coordinate space context through PushMatrix and PopMatrix

Using the Kivy canvas brings with it some technical challenges because Kivy integrates graphic processing with efficiency in mind. These challenges are not initially obvious, but there is nothing particularly difficult about them if we understand the underlying problem. This is why the next section is dedicated to introduce the main considerations that we face when we use the canvas.

主站蜘蛛池模板: 兴海县| 江川县| 噶尔县| 房山区| 合川市| 增城市| 甘谷县| 电白县| 南汇区| 泉州市| 大渡口区| 余姚市| 芦溪县| 梁河县| 宁晋县| 水城县| 广汉市| 石狮市| 宁国市| 三门峡市| 蓬莱市| 陵水| 博白县| 全椒县| 桂阳县| 城步| 高尔夫| 封开县| 东阳市| 治县。| 繁昌县| 伊春市| 佛坪县| 莎车县| 浪卡子县| 班玛县| 长白| 保靖县| 闽侯县| 庄河市| 东平县|