2017-08-14 15 views
2

私は、njplotが出力する系統樹を含む追記ファイルを持っています。基本的には、行末に行とラベルで構成されています。今は白黒ですが、私は異なる木々の違いをマークしたいと思います:PSで簡単に色を塗る

以下は私のファイルのうち、3つのラベルだけを使った短いものです。

a)作成するために何をする必要がありますか。 "B. ovis 25840"が赤で表示されますか?

b)はどのように私の周りのボックスを作ることができるように、彼らは同じグループに属していることをマークするように「B.のsuisのが23445」と「B.トムセン」(?)

/setpacking where {true setpacking} if 
1 setlinecap 1 setlinejoin 1 setlinewidth 0 setgray 
/basefont /Times-Roman findfont 12 scalefont def 
/titlefont /Times-Roman findfont 12 scalefont def 
/setclip {40 40 moveto 560 40 lineto 560 810 lineto 40 810 lineto closepath clip newpath} def 
/title {titlefont setfont 
40 815 moveto (brucella_conc_se_ani.out_nj.outtree Mon Aug 14 14:52:28 2017 
) show ( Page) show show (of 1) show 
} def 
%%EndProlog 
%%Page: ? 1 
(1) title setclip 
0 0 translate 
basefont setfont 
50 50 translate 
0.7 setgray -10 -10 moveto 510 -10 lineto 510 760 lineto -10 760 lineto closepath stroke 0 setgray 
359 8 moveto 
(B. ovis 25840) show 
298 67 moveto 
(B. Thomsen) show 
294 127 moveto 
(B. suis 23445) show 
showpage 
+0

としてそこにも利用可能である「ブルーブック」を見たいかもしれませんが、https://stackoverflow.com/questions/518837/を参照してくださいポストスクリプトのストーリー・イン・ザ・ストップ・イン・ザ・ポップスを手に入れることができます。 – lhf

答えて

3

テキストは(描かれています現在の色を使用して、タイプ3以外のフォントのテキストの場合)。したがって、テキストを描画する前に現在の色を変更すると、別の色で描画されます。

PostScriptには多くの色演算子がありますが、最も簡単なのはsetgray、setrgbcolor、setcmykcolorの演算子です。 setgrayは1(白)と0(黒)の間の値をとり、現在の色をグレーの割合に設定します。 setrgbcolorはR、G、Bのそれぞれについて01と1の間で3つのパラメータを取り、setcmykcolorはCMYKコンポーネントと同じですがCMYKコンポーネントで行います。

質問 'a' 1 0 0 setrgbcolorに、テキストがある行の前に置くと、テキストが赤で描画されます。

以降の操作はすべてとなりますので、ここではgsave演算子とgrestore演算子を考慮する必要があります。 gsaveはグラフィックス状態のコピーを保存し、grestore(驚き!)は最も最近保存されたバージョンからグラフィックス状態を復元します。

これを使用して、グラフィックスの状態変更の影響を制限できます。例えば:

gsave 
1 0 0 setrgbcolor 
(B. ovis 25840) show 
grestore 

は赤色でテキストをレンダリングするだろうが、それに続くテキストは、おそらく黒gsave、前力の色であろう。

ページの現在のポイントは、gstateの一部です。従って:

は、第2の「ショー」が第1のものと同じ位置で起こり、それを上書きする原因になります。

あなたは「箱を描いてはいけません」、PostScriptにはそのようなグラフィックプリミティブはありません。あなたがしていることは、パスを構築し、それをストロークすることです(塗りつぶした長方形の代わりにそれを塗りつぶすことができます)。例えば

0 0 moveto 
0 100 lineto 
100 100 lineto 
100 0 liento 
closepath 
stroke 

は、100の広いと背の高いユニット(SO正方形)であろう0,0でその左下隅を有する長方形のパスを構築します。 'ストローク'演算子は、現在の線幅と現在の色を使用してパスをストロークします。

PostScriptを詳しく調べるには、PostScript Language Reference Manualのコピーが必要です。このマニュアルは、AdobeのWebサイトからオンラインでPDF形式で入手できます。

あなたはまた、「PostScript言語チュートリアルと料理」Bについては

+0

'rectstroke'は描画ボックスのプリミティブではありませんか? – lhf

+0

はい、rectfillですが、私は一般的になっていました。 – KenS

+0

詳細な回答ありがとうございます。私の目的に完璧です – FlyingTeller

関連する問題