2017-01-23 10 views
2

私はポストスクリプトで単純なチェックボックスを作る機能を開発しましたが、まだ動作していないようです。 矩形を生成する問題はありませんが、行の書き込み中に例外がスローされるようです(チェックボックスの古典的なXを作成します)。nocurrentpoint例外PostScript

/nocurrentpoint in --nocurrentpoint-- 

ここに私のコードです。

/doMarkedCheckBox { 
0.1 setlinewidth 
currentpoint 
/yIniChk exch def 
/xIniChk exch def 
xIniChk 
yIniChk 
DimChars 
DimChars 
rectstroke 
xIniChk DimChars add yIniChk DimChars add lineto 
0 DimChars 0 sub moveto 
yIniChk DimChars add xIniChk lineto 
stroke 
} bind def 

誰かが正しく行う方法を説明できますか? ありがとうございます。

+0

これは、あなたがプロシージャを呼び出すん手順の定義、ありますか? 'currentpoint'はあなたが' moveto'を前にしたとき(または現在のポイントを設定する他のコマンド)にのみ有効です。あなた自身を設定する前に、現在のポイントはありません。 (翻訳または他の変換では現在のポイントも設定されません) –

答えて

3

これはまさに問題です。rectstrokeコールの後、パスを閉じると、出発点はありません。

もう一度移動して値をスタックに入れてmovetoを発行することができます - 少なくともチェックの他の部分を生成するコードにエラーがあるようです - そして、あなたはsquaresize既にDimCharsにあるので、これらの問題でrlinetoを使用する方が簡単かもしれません。あなたは良いことがありますすべてのすべてで

、あなたがこの順序でrectstroke後にあなたの指示を交換する場合:

... 
    xInitChk YInitChk moveto 
    DimChars DimChars rlineto 
    stroke 
    XInitChk YInitChk DimChars add moveto 
    DimChars DimChars neg rlineto 
    stroke 
} bind def 
関連する問題