2025-03-10 18:31:39 +08:00

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()