114 lines
5.0 KiB
Python
114 lines
5.0 KiB
Python
def generate_shape_dict(shape, **kwargs):
|
|
if shape == 'rect':
|
|
return {
|
|
'method': 'rect',
|
|
'pos': kwargs.get('pos', (0, 0)),
|
|
'size': kwargs.get('size', (1, 1)),
|
|
'color': kwargs.get('color', (255, 255, 255)),
|
|
'width': kwargs.get('width', 0) # 添加边框宽度
|
|
}
|
|
elif shape == 'line':
|
|
return {
|
|
'method': 'line',
|
|
'start_pos': kwargs.get('start_pos', (0, 0)),
|
|
'end_pos': kwargs.get('end_pos', (1, 1)),
|
|
'color': kwargs.get('color', (255, 255, 255))
|
|
}
|
|
elif shape == 'circle':
|
|
return {
|
|
'method': 'circle',
|
|
'center': kwargs.get('center', (0, 0)),
|
|
'radius': kwargs.get('radius', 1),
|
|
'color': kwargs.get('color', (255, 255, 255))
|
|
}
|
|
elif shape == 'ellipse':
|
|
return {
|
|
'method': 'ellipse',
|
|
'pos': kwargs.get('pos', (0, 0)),
|
|
'size': kwargs.get('size', (1, 1)),
|
|
'color': kwargs.get('color', (255, 255, 255))
|
|
}
|
|
elif shape == 'polygon':
|
|
return {
|
|
'method': 'polygon',
|
|
'pointlist': kwargs.get('pointlist', []),
|
|
'color': kwargs.get('color', (255, 255, 255))
|
|
}
|
|
elif shape == 'arc':
|
|
return {
|
|
'method': 'arc',
|
|
'pos': kwargs.get('pos', (0, 0)),
|
|
'size': kwargs.get('size', (1, 1)),
|
|
'color': kwargs.get('color', (255, 255, 255)),
|
|
'start_angle': kwargs.get('start_angle', 0),
|
|
'stop_angle': kwargs.get('stop_angle', 3.14)
|
|
}
|
|
elif shape == 'point':
|
|
return {
|
|
'method': 'point',
|
|
'pos': kwargs.get('pos', (0, 0)),
|
|
'color': kwargs.get('color', (255, 255, 255))
|
|
}
|
|
elif shape == 'lines':
|
|
return {
|
|
'method': 'lines',
|
|
'pointlist': kwargs.get('pointlist', []),
|
|
'color': kwargs.get('color', (255, 255, 255))
|
|
}
|
|
else:
|
|
raise ValueError("Unsupported shape type")
|
|
|
|
def main():
|
|
print("欢迎使用图形参数生成器!")
|
|
shape = input("请输入图形类型 (rect, line, circle, ellipse, polygon, arc, point, lines): ").strip().lower()
|
|
|
|
params = {}
|
|
|
|
if shape == 'rect':
|
|
params['pos'] = tuple(map(int, input("请输入矩形位置 (x y): ").split()))
|
|
params['size'] = tuple(map(int, input("请输入矩形大小 (width height): ").split()))
|
|
params['color'] = tuple(map(int, input("请输入矩形颜色 (R G B): ").split()))
|
|
params['width'] = int(input("请输入矩形边框宽度: ")) # 添加边框宽度输入
|
|
elif shape == 'line':
|
|
params['start_pos'] = tuple(map(int, input("请输入起始位置 (x y): ").split()))
|
|
params['end_pos'] = tuple(map(int, input("请输入结束位置 (x y): ").split()))
|
|
params['color'] = tuple(map(int, input("请输入线条颜色 (R G B): ").split()))
|
|
elif shape == 'circle':
|
|
params['center'] = tuple(map(int, input("请输入圆心位置 (x y): ").split()))
|
|
params['radius'] = int(input("请输入圆的半径: "))
|
|
params['color'] = tuple(map(int, input("请输入圆的颜色 (R G B): ").split()))
|
|
elif shape == 'ellipse':
|
|
params['pos'] = tuple(map(int, input("请输入椭圆位置 (x y): ").split()))
|
|
params['size'] = tuple(map(int, input("请输入椭圆大小 (width height): ").split()))
|
|
params['color'] = tuple(map(int, input("请输入椭圆颜色 (R G B): ").split()))
|
|
elif shape == 'polygon':
|
|
points = input("请输入多边形的点 (x1 y1 x2 y2 ...): ").split()
|
|
params['pointlist'] = [(int(points[i]), int(points[i + 1])) for i in range(0, len(points), 2)]
|
|
params['color'] = tuple(map(int, input("请输入多边形颜色 (R G B): ").split()))
|
|
elif shape == 'arc':
|
|
params['pos'] = tuple(map(int, input("请输入弧的位置 (x y): ").split()))
|
|
params['size'] = tuple(map(int, input("请输入弧的大小 (width height): ").split()))
|
|
params['color'] = tuple(map(int, input("请输入弧的颜色 (R G B): ").split()))
|
|
params['start_angle'] = float(input("请输入弧的起始角度 (弧度制): "))
|
|
params['stop_angle'] = float(input("请输入弧的结束角度 (弧度制): "))
|
|
elif shape == 'point':
|
|
params['pos'] = tuple(map(int, input("请输入点的位置 (x y): ").split()))
|
|
params['color'] = tuple(map(int, input("请输入点的颜色 (R G B): ").split()))
|
|
elif shape == 'lines':
|
|
points = input("请输入线段的点 (x1 y1 x2 y2 ...): ").split()
|
|
params['pointlist'] = [(int(points[i]), int(points[i + 1])) for i in range(0, len(points), 2)]
|
|
params['color'] = tuple(map(int, input("请输入线段颜色 (R G B): ").split()))
|
|
else:
|
|
print("不支持的图形类型")
|
|
return
|
|
|
|
# 生成图形字典
|
|
shape_dict = generate_shape_dict(shape, **params)
|
|
|
|
# 输出结果
|
|
print("生成的图形参数字典:")
|
|
print(shape_dict)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|