図の大きさを変える

図の大きさを変えるには、基本的にはDclSetViewportの引数を変更すればよい。引数は図の左端・右端・下端・上端の座標であり、描画範囲全体で定義された「正規座標」(0≦x≦1, 0≦y≦1)での数値を与える。

描画範囲自体を変更する方法もある。用紙の形は長方形なのに、そこに内接する正方形の領域をとってその中だけに図を描くのではもったいない、紙一杯に図を描きたい、という時には、パラメータ'USE_FULL_WINDOW'を.true.にする。

ただしその場合, 正規座標のスケーリングは縦・横の長いほうの長さを1として決められる。物理的な描画範囲はデバイスによって違うので, 異なるデバイスに出力する際にエラーを起こして出力できなくなる 可能性がある. そこで、'USE_FULL_WINDOW'を.true.にしたときは, DclSetAspectRatioを使って 「私は 1 × 0.6 の領域に図を描きたいのだ」 と宣言しておくことをお勧めする. DclSetAspectRatioで縦横比が指定されると, 以後, この領域が最大内接するように描画領域を設定するので, 1 × 0.6 の比率を持つデバイスには一杯の図が描けるし, そうでないデバイスに出力してもエラーは起こさない。また、DclSetFrameMarginでマージンをとってタイトル等のスペースを確保しておくこともできる。

目的によっては絶対的な長さ(例えば10cm)を指定したい場合 もある。DclSetFrameSizeで、自分が描きたい描画範囲の大きさを具体的に指定しておけば、その範囲が物理的に描画できる範囲内である限り、異なったデバイスでも同じ大きさの図が出力できる。cm 単位の指定のほか、A4, B5 等の規格の大きさでも指定が可能である。ただし、通常 A4 の用紙の最大描画範囲は用紙そのものの大きさよりも小さいの で, A4 の紙にA4 を指定するとエラーとなる。また, ウィンドウなど物理的な大きさがはっきり しないデバイスに対しては, 適当な大きさが仮定されている。

 

size.f90

program size

  use dcl

    call DclOpenGraphics()

    call DclSetParm( 'USE_FULL_WINDOW', .true. )
    call DclSetFrameMargin( 0., 0., 0.08, 0.08 )
    call DclSetAspectRatio( 1., 0.6 )

    call DclNewFrame
    call DclSetViewPort( 0.1, 0.9, 0.1, 0.5 )
    call DclDrawDeviceWindowFrame( 1 )
    call DclDrawViewportFrame( 2 )
    call DclDrawTextNormalized( 0.5, 0.3, 'Figure' )

    call DclCloseGraphics

end program


DclSetFrameMargin
(SLMGN)
マージンを設定する.
DclSetAspectRatio
(SLRAT)
縦横比を設定する.
DclSetFrameSize
(SLSIZE,SLFORM)
第1フレームの大きさを設定する.

関連リンク