本文整理汇总了Python中PyQt5.Qt.QPainterPath.cubicTo方法的典型用法代码示例。如果您正苦于以下问题:Python QPainterPath.cubicTo方法的具体用法?Python QPainterPath.cubicTo怎么用?Python QPainterPath.cubicTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.Qt.QPainterPath
的用法示例。
在下文中一共展示了QPainterPath.cubicTo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_line
# 需要导入模块: from PyQt5.Qt import QPainterPath [as 别名]
# 或者: from PyQt5.Qt.QPainterPath import cubicTo [as 别名]
def create_line(ly, ry, right_to_left=False):
' Create path that represents upper or lower line of change marker '
line = QPainterPath()
if not right_to_left:
line.moveTo(0, ly)
line.cubicTo(C, ly, w - C, ry, w, ry)
else:
line.moveTo(w, ry)
line.cubicTo(w - C, ry, C, ly, 0, ly)
return line
示例2: svg_path_to_painter_path
# 需要导入模块: from PyQt5.Qt import QPainterPath [as 别名]
# 或者: from PyQt5.Qt.QPainterPath import cubicTo [as 别名]
def svg_path_to_painter_path(d):
'''
Convert a tiny SVG 1.2 path into a QPainterPath.
:param d: The value of the d attribute of an SVG <path> tag
'''
from PyQt5.Qt import QPainterPath
cmd = last_cmd = b''
path = QPainterPath()
moveto_abs, moveto_rel = b'Mm'
closepath1, closepath2 = b'Zz'
lineto_abs, lineto_rel = b'Ll'
hline_abs, hline_rel = b'Hh'
vline_abs, vline_rel = b'Vv'
curveto_abs, curveto_rel = b'Cc'
smoothcurveto_abs, smoothcurveto_rel = b'Ss'
quadcurveto_abs, quadcurveto_rel = b'Qq'
smoothquadcurveto_abs, smoothquadcurveto_rel = b'Tt'
# Store the last parsed values
# x/y = end position
# x1/y1 and x2/y2 = bezier control points
x = y = x1 = y1 = x2 = y2 = 0
data = d.replace(b',', b' ').replace(b'\n', b' ')
if isinstance(data, type('')):
data = data.encode('ascii')
end = len(data)
data = ReadOnlyFileBuffer(data)
def parse_float():
chars = []
while data.tell() < end:
c = data.read(1)
if c == b' ' and not chars:
continue
if c == b'-' or b'0' <= c[0] <= b'9' or c == b'.':
chars.append(c[0])
else:
break
if not chars:
raise ValueError('Premature end of input while expecting a number')
return float(b''.join(chars))
def parse_floats(num, x_offset=0, y_offset=0):
for i in xrange(num):
val = parse_float()
yield val + (x_offset if i % 2 == 0 else y_offset)
repeated_command = None
while data.tell() < end:
last_cmd = cmd
cmd = data.read(1) if repeated_command is None else repeated_command
repeated_command = None
if cmd == b' ':
continue
elif cmd == moveto_abs:
x, y = parse_float(), parse_float()
path.moveTo(x, y)
elif cmd == moveto_rel:
x += parse_float()
y += parse_float()
path.moveTo(x, y)
elif cmd == closepath1 or cmd == closepath2:
path.closeSubpath()
elif cmd == lineto_abs:
x, y = parse_floats(2)
path.lineTo(x, y)
elif cmd == lineto_rel:
x += parse_float()
y += parse_float()
path.lineTo(x, y)
elif cmd == hline_abs:
x = parse_float()
path.lineTo(x, y)
elif cmd == hline_rel:
x += parse_float()
path.lineTo(x, y)
elif cmd == vline_abs:
y = parse_float()
path.lineTo(x, y)
elif cmd == vline_rel:
y += parse_float()
path.lineTo(x, y)
elif cmd == curveto_abs:
x1, y1, x2, y2, x, y = parse_floats(6)
path.cubicTo(x1, y1, x2, y2, x, y)
elif cmd == curveto_rel:
x1, y1, x2, y2, x, y = parse_floats(6, x, y)
path.cubicTo(x1, y1, x2, y2, x, y)
elif cmd == smoothcurveto_abs:
if last_cmd == curveto_abs or last_cmd == curveto_rel or last_cmd == smoothcurveto_abs or last_cmd == smoothcurveto_rel:
x1 = 2 * x - x2
y1 = 2 * y - y2
else:
x1, y1 = x, y
x2, y2, x, y = parse_floats(4)
path.cubicTo(x1, y1, x2, y2, x, y)
#.........这里部分代码省略.........