如何为SVG中线条间的区域添加填充色?
问题描述
我有一个包含多条path的SVG图像,想要在图像内部、仅在黑色线条围成的区域添加背景填充色。请问有合适的工具推荐吗?目前我考虑合并路径并创建polygon,但认为这不是一个好方案。
SVG代码
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100%" viewBox="0 0 285 261" enable-background="new 0 0 285 261" xml:space="preserve"> <path fill="none" opacity="1.000000" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.000000" d=" M164.000000,33.500000 C164.833328,43.333332 165.675537,53.165928 166.498123,63.000156 C168.171005,82.999634 169.910492,102.993973 171.474167,123.002022 C172.606567,137.491669 173.448700,152.003769 174.514191,166.498962 C175.617111,181.503647 176.883545,196.496338 177.976624,211.501709 C178.449387,217.991547 178.666656,224.500000 178.999985,231.000000 "/> <path fill="none" opacity="1.000000" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.000000" d=" M205.000000,33.500000 C211.705887,48.559238 215.482666,64.496674 218.985229,80.503227 C226.634079,115.458031 230.594208,150.944061 233.962753,186.503525 C235.034225,197.814301 235.715897,209.163452 236.456482,220.502838 C236.596710,222.649948 236.929367,224.891998 235.656830,227.817383 C162.666672,234.509201 89.333336,235.739029 15.502701,228.046219 C15.894063,223.319000 16.197031,219.659500 16.499998,216.000000 "/> <path fill="none" opacity="1.000000" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.000000" d=" M48.500000,33.000000 C100.500534,33.000000 152.501068,33.000000 204.650604,33.000000 C205.677261,27.124668 203.990173,21.838848 204.576874,16.250000 C152.500000,16.250000 101.000000,16.250000 49.660480,16.250000 C48.325832,18.359861 48.603340,20.451437 48.482582,22.498972 C48.084709,29.245363 46.420258,35.630894 44.107647,42.038849 C33.721039,70.818932 28.822332,100.874130 24.570915,131.010010 C21.013802,156.224365 18.429388,181.560898 16.995337,206.999741 C16.863691,209.335037 16.731928,211.673782 16.478987,213.997711 C16.282843,215.799805 17.442259,215.521439 18.500000,215.500000 "/> <path fill="none" opacity="1.000000" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.000000" d=" M164.000000,17.000000 C164.000000,22.166666 164.000000,27.333334 164.000000,32.500000 "/> </svg>
效果预览

解决方案与工具推荐
一、可视化工具推荐
- Inkscape:免费开源的矢量编辑工具,操作简单。导入SVG后选中所有路径,用「路径 → 合并」(快捷键Ctrl++)将多条路径合并为闭合路径,直接设置填充色即可。若合并后有多余片段,可使用「路径 → 简化」或节点工具调整。
- Adobe Illustrator:专业级矢量软件。导入SVG后,选中所有路径执行「对象 → 路径 → 轮廓化描边」,再通过「路径查找器」面板的「联集」功能合并成闭合形状,之后就能设置填充色。
- Figma:在线设计工具,无需安装。导入SVG后选中所有路径,右键选择「合并选区」,通过右侧面板直接设置填充颜色,操作直观。
二、手动修改SVG代码
如果不想依赖工具,可直接修改代码:
- 先将所有
<path>的fill="none"替换为目标填充色(如fill="#f0e68c"),但这种方式可能因路径未闭合导致填充异常。 - 更稳妥的方法是将所有路径的
d属性内容拼接成一条路径,确保首尾坐标一致,最后添加闭合指令Z,再设置fill属性。例如把所有路径的指令合并,去掉重复的起始标记,补充闭合指令。
三、注意事项
- 合并路径前确认所有线条能形成连续闭合区域,避免填充范围超出预期。
- 若路径描边宽度不同,合并前建议统一宽度,防止形状变形。
内容的提问来源于stack exchange,提问作者Lansana Diomande
相关产品推荐
相关产品推荐

