PDF學習十一:路徑構造與顯示

本文轉自:https://blog.csdn.net/u012632138/article/details/82022943

說明:

瞭解什麼是路徑構造,瞭解什麼是路徑顯示,掌握相應操作符。

PDF reference1.7.pdf 4.4

定義:

  1. 路徑:用於定義畫線,填充的區域,指定剪切其它圖像的邊界。
  2. 連接:一對線段被稱爲是連接的,僅當他們是連續的,第二條線段開始在第一條線段結束的地方。
  3. 閉合:h操作符明確的將子路徑的最後一點與開始點連接。
  4. 當前剪切路徑:圖形狀態包括一個當前剪切路徑定義了當前頁面的剪切邊界。

操作符:

  1. 路徑構造操作符:定義了路徑的幾何佈局。
  2. 路徑顯示操作符:結束一個路徑對象,並將路徑對象繪製到當前頁上。
  3. 剪切路徑操作符:定義在路徑繪製操作符之前,路徑構造操作符之後,用於剪切邊界。

路徑構造操作符:

  1. m或re開始新的路徑。
  2. 當前路徑:即當前正在構造的路徑:
    1. 當前路徑不被保存和恢復,即不能使用qQ。

    2. PDF路徑是內部對象,不會在頁面上做任何標記。

    3.  如果當前路徑是空,那麼當前點是未定義的。

操作數 操作符 描述  
x y m 開始一條新的子路徑並移動當前點到 (x,y) 點。  
x y l 追加一條直線從當前點到點 (x,y)  

x1 y1
x2 y2
x3 y3

c

追加一條 3 次方 Bezier 曲線到當前路徑。
控點: (x1, y1) 和 (x2, y2)
端點:當前點 和 (x3, y3)

x2 y2
x3 y3

v

追加一條 3 次方 Bezier 曲線到當前路徑
控點:當前點 和 (x2, y2)

 

x1 y1
x3 y3

y 追加一條 3 次方 Bezier 曲線到當前路徑
控點: (x1, y1) 和 (x3, y3)
- h 通過畫一條直線段從當前點到起始點 , 閉合當前子路徑 。  
x y
width
height
re

追加一個矩形到當前路徑
x y width height re
等價於
x y m
(x + width) y l
(x + width) (y + height) l
x (y + height) l
h

 

路徑顯示操作符:

結束一個路徑對象 ,並用指定的風格將路徑顯示 。最主要顯示操作符有 S 和 f。

操作數

操作符

描述

 

- S 繪製路徑。

 

- s 閉合並繪製路徑。等價於( h S )

 

- f

填充路徑,使用非 0 環繞數規則來決定填充區域。

 
- F 等價於 f ,一般使用 f 。  
- f* 填充路徑,使用奇偶規則。  
- B 填充並畫路徑 , 使用非 0 填充規則 , 相當於 (f S)  
- B* 填充並畫路徑 , 使用奇偶規則,相當於 (f* S)  
- b

閉合,填充,並畫路徑。使用非 0 規則來決定填充區域。相當於( h B )

 
- b*

閉合,填充,並畫路徑。使用奇偶規則。相當於 (h B*)

 
- n

閉合路徑,但既不填充,也不畫路徑。該參數不進路徑繪製操作。主要用來改變當前剪切路徑大小。

 

Stroking 

操作符 : S
相關參數 :

  •  Line width
  •  Color or pattern
  •  Line Dash Pattern
  •  Line cap
  •  Line join & Miter limit
  •  Stroke Adjustment

Filling

操作符 : f

相關參數:

  •  任何子路徑填充前隱式閉合
  •  非 0 環繞數規則
  •  奇偶規則

非 0 環繞數規則

  1. 初始化環繞數到 0 。
  2.  從 P 點向外任意引一條射線。
  3.  每遇到一條與該線的交叉線,判斷交叉線是否和這條直線方向相同,如果是,則環繞數加 1 ,如果不是,則環繞數減 1 。如果與該直線正交,則順時針加 1 ,逆時針減 1
  4.  假如環繞數不等於 0 ,則點 P 在多邊形內。
  5. 但是這個方法有侷限性 , 不適合相交 , 或者選一條正切的射線 . 因爲射線的方向是任意的 , 這個規則簡單的選用射線並不碰到這些情況 .

 

奇偶規則

  1. 從圖形中的任意一點 P 向外任意引一條射線。
  2. 簡單計算與該射線相交線的數量。
  3. 如果這個數是奇數,則認爲點在圖形內。

 

剪切路徑操作符

圖形狀態包含了一個當前剪切路徑,該路徑限制了顯示操作符可以在頁面內作圖的範圍。

操作數

操作符

描述

- W

修改當前剪切路徑用當前路徑與當前剪切路徑相交的區域 ,利用非 0 規則取得區域。

- W* 修改當前剪切路徑用當前路徑與當前剪切路徑相交的區域 ,利用奇偶規則取得區域。
  • n 操作符雖然不顯示任何到頁面上 ,但可用於建立剪切區域 。
  • q Q 推薦使用 , 因爲剪切區域是相交的 , 不可擴大 。 如果不保存當前屬性 , 那麼整個頁面將受這個 clipping 的限制 。
  • 0 0 10 10 re W n 就生成一個剪切路徑 , 只顯示這個矩形框裏面的內容。

作業:

  1. 使用操作符設置:線寬爲5,line join爲Miter join,Line Cap Style爲Round cap,Miter limit爲2,line dash pattern爲3單位實線,1單位空白,1單位偏移。
    在適當的位置畫出夾角小於60°的2段相連接線段。
  2. 使用圖形狀態參數字典設置:線寬爲5,line join爲Miter join,Line Cap Style爲Round cap,Miter limit爲2,line dash pattern爲5單位實線,2單位空白,2單位偏移,stroke 透明度爲50%,nonstroke透明度爲50%
    在適當的位置畫出長爲200,寬爲200,nonstroke color爲紅色的矩形。
  3. 利用clipping寫出以下效果的pdf。字體大小100。

 4. 在適當的位置,利用c,v,y操作符畫出3段bezier曲線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章