簡體   English   中英

在 PyMuPDF 中使用貝塞爾曲線繪制圓角矩形

[英]Using bezier curves to draw a rectangle with rounded corners in PyMuPDF

我想用PyMuPDF在pdf中畫一個圓角矩形。顯然,圓角矩形沒有特定的方法。 但我想知道是否可以將Shape.draw_bezier()Shape.draw_curve()用於此目的,進行筆划以恢復矩形的形狀。

興趣問題,這可以通過 PyMuPDF 實現。 但目前做起來還是有點笨拙。 我建議的基本方法是

  1. 在你的最后一個應該着陸的地方定義一個普通的矩形。
  2. 在四個角中的每一個定義 2 個點(“輔助點”),它們將成為方法draw_curve()的開始和結束(您已經正確地識別了自己 - 起首。)。
  3. 然后開始繪圖。 該形狀將由 4 條曲線和 4 條線組成,每條線后跟一條曲線,再后跟一條線......

這是代碼:

import fitz

doc = fitz.open()
page = doc.new_page()
rect = fitz.Rect(100, 100, 300, 200)
d = 10  # controls how round the edges are

# make a shape to get properly connect points
shape = page.new_shape()

lp = shape.draw_line(rect.bl + (d, 0), rect.br - (d, 0))
lp = shape.draw_curve(lp, rect.br, rect.br - (0, d))

lp = shape.draw_line(lp, rect.tr + (0, d))
lp = shape.draw_curve(lp, rect.tr, rect.tr - (d, 0))

lp = shape.draw_line(lp, rect.tl + (d, 0))
lp = shape.draw_curve(lp, rect.tl, rect.tl + (0, d))

lp = shape.draw_line(lp, rect.bl - (0, d))
lp = shape.draw_curve(lp, rect.bl, rect.bl + (d, 0))

shape.finish(color=(1, 0, 0), fill=(1, 1, 0), closePath=False)
shape.commit()
doc.save(__file__.replace(".py", ".pdf"))

給你這個: 在此處輸入圖像描述

暫無
暫無

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

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