簡體   English   中英

SVGwrite:使用背景色導出為png / jpg並填充環空

[英]SVGwrite: exporting to png/jpg with a background color and filling annulus

我一直在使用svgwrite庫編寫一些Python腳本。 我現在想使它以背景色導出圖形,在我看來,我可能必須將其轉換為另一種格式(png或jpg應該可以)。 我對svg格式了解不多,但是我確定它可以處理本機背景色。

另外,我正在繪制兩個共享同一中心的圓,並且我想用一種特定的顏色填充它們之間的空間,就像繪制一個圓環一樣,但是我無法在文檔中找到如何做。

預先感謝您的幫助。

這是用顏色創建圓的示例。 第一個圓圈具有填充顏色和單獨的筆觸顏色,因此它與兩個圓圈相同,頂部較小。 第二個圓具有筆觸顏色,但fill ='none'僅給出了環形形狀。 最后一組圓圈顯示,將一個圓圈與另一個圓圈放在同一位置可以覆蓋下面的內容。 這可能是您想要的瓣環。

import svgwrite
def create_svg(name):
    SVG_SIZE = 900
    color_list = ["rgb(123, 80, 86)", "rgb(67, 130, 124)", "red"] 
    dwg = svgwrite.Drawing(name, (SVG_SIZE, SVG_SIZE), debug=True)
    # background will be white.
    dwg.add(dwg.rect(insert=(0, 0), size=('100%', '100%'), fill='white'))
    y = 50
    circle_1 = dwg.circle(center=(100, y), r=30, fill='green', 
            stroke='blue', stroke_width=5)
    dwg.add(circle_1)
    circle_2 = dwg.circle(center=(200, y), r=30, fill='none', 
            stroke='blue', stroke_width=5)
    dwg.add(circle_2)
    y += 300
    for i in range(3):
        circle_i = dwg.circle(center=(150, y), r=(100 - 30 * i), 
                fill=color_list[i], stroke='none', stroke_width=0)
        dwg.add(circle_i)
    dwg.save()
if __name__ == '__main__':
    create_svg('filling_annulus.svg')

背景

對於您的背景色,最簡單的解決方案是僅繪制一個填充整個文檔的矩形。

<rect width="100%" height="100%" fill="red" />

還有其他方法可以做到這一點。 SVG 1.2定義了viewport-fill ,但並非所有渲染器都支持。 在大多數瀏覽器中, background-color可以,但是在非瀏覽器的SVG渲染器上可能不起作用。 僅使用矩形是最簡單的。

我假設您的意思是您想在環內有一個透明的孔? 如果是這樣,有兩種方法可以做到。 最直接的方法就是創建一個帶有兩個子路徑的路徑。 一個用於外圈,一個用於內圈。 當兩個子路徑重疊並且fill-rule屬性設置為evenodd ,它會形成一個洞。

<path d="M -100,0
         A 100,100, 0,1,0, 100,0
         A 100,100, 0,1,0, -100,0
         M -75,0
         A 75,75, 0,1,0, 75,0
         A 75,75, 0,1,0, -75,0
         Z"
stroke="black" fill="orange" fill-rule="evenodd"/>

在這里演示

有關fill-rule更多信息,請訪問: http : //www.w3.org/TR/SVG/painting.html#FillRuleProperty

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM