図の大きさを変える

図の大きさを変えるには, 基本的には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フレームの大きさを設定する.