So-net無料ブログ作成
検索選択

クリップについて [PostScript]

PS BASIC


クリップとは図形を任意の領域で切り抜くことです。
クリップにもいろいろなタイプがありますのでサンプルを作成しました。
少し不具合があり、「刈り込み」では、本来出ないはずの線が出てしまっています。図形とクリップ領域がピッタリ合っているためにそうなったのではないかと思います。いろいろ試しましたが消すことができませんでした。

【サンプルコード】
クリップなしでは、最後に描いた円が上に表示され下の円は一部隠れています。 クリップ00なし.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:クリップ % クリップ (なし) % カラー定義 /red { 1 0 0 setrgbcolor } def /bk { 0 0 0 setrgbcolor } def /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 0 360 arc } def % 右側の円の定義 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 bk en_right % 右側の円 fill % 塗りつぶし red en_left % 左側の円 fill
クリップ01中窓.png % クリップ (中窓) % Adobe Illustratorで複合パスと言われているものです % ※コードを短くするためカラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 bk en_right % 右側の円 red en_left % 左側の円 (色は最新設定の色になる) fill % 塗りつぶし
クリップ02刈り込み.png % クリップ (右刈り込み) 注意 薄っすらと線が見える % ※カラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 red en_right clip % 右側の円でクリップする bk en_left % 左側の円 fill % 塗りつぶし
クリップ03刈り込み.png % クリップ (左刈り込み) 注意 薄っすらと線が見える % ※カラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 bk en_left clip % 左側の円でクリップする red en_right % 右側の円 fill % 塗りつぶし
クリップ04切抜き.png % クリップ (切り抜き) % ※カラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 red en_right clip % 右側の円でクリップする newpath % 重要これがないと切り抜きにはならない bk en_left % 左側の円 fill % 塗りつぶし
クリップ05.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:四角形クリップ % 四角形クリップオペレータ /sw 1 def % 色変更スイッチ /swc { sw 1 eq { red } { bk } ifelse } def % swが1なら赤、そうでないなら黒にする /red { 1 0 0 setrgbcolor } def % カラー定義 /bk { 0 0 0 setrgbcolor } def % カラー定義 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 -80 -80 160 160 rectclipt % 四角形クリップ 120 -5 0 { % ストライプの円 /r exch def % 制御変数をr(半径)に入れる swc 0 0 r 0 360 arc % 色設定 円を引く fill /sw sw neg def % 色変更 } for
クリップ06.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:四角形クリップ % 四角形クリップ(配列使用) /sw 1 def /swc { sw 1 eq { red } { bk } ifelse } def /red { 1 0 0 setrgbcolor } def /bk { 0 0 0 setrgbcolor } def 0 0 240 240 rectstroke 120 120 translate newpath % 複数の四角形クリップを配列に設定する [ -100 50 50 50 -25 50 70 50 75 50 50 50 -50 0 50 30 50 0 50 10 -100 -50 50 50 -25 -50 30 30 10 -100 100 50 ] rectclip 120 -5 0 { /r exch def swc 0 0 r 0 360 arc fill /sw sw neg def } for



【オペレータの説明】
x y 幅 高さ rectclip
四角形のクリッピングパスを作成する
[ x1 y1 幅1 高さ1~xn yn 幅n 高さn ] rectclip
複数の四角形のクリッピングパスを作成する

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました