(2021.04.04) [目次へ]

(w-5) WNIMGR (BMP画像の表示)

機能:

(a)画像ファイルを読み込み,XVIEWP内の指定領域に拡大・縮小して表示する。(WinPlotG専用)

使用法:

   CALL WNIMGR (FileName,XL,YL,XU,YU,ICON)

引 数
入出力
内  容
FileName
文字型
入力
ビットマップ画像のファイル名。
空白を指定すると WNIMGW で保存したメモリー。
XL,YL
実数型
入力
画像を表示する領域の左下のXY座標値。
XU,YU
実数型
入力
画像を表示する領域の右上のXY座標値。
ICON
整数型
出力
= 0:正常終了。 = 2:ファイルがない。 = 3:パスがない。
=-1:その他のエラー。

@ 読み込み可能な画像ファイルは,8 ビット(256色)又は 24 ビット(フルカラー)の非圧縮 BMP 形式。

A XL,XUを逆に指定すると左右逆向き,YL,YUを逆に指定すると上下逆向きに表示される。

B FileName に空白を指定すると,WNIMGW ルーチンで保存したメモリーから入力する。WNSIGN ルーチンの例2を参照。

プログラム例1:画像データをマスコット表示

! ... example of WNIMGR No.1 ...
     call XINT('WIN=(600,600)')
     call XVIEWP(0.0,0.0,25.0,25.0)
     call FRAME (0.0,0.0,25.0,25.0)
     call CLRPEN(11)
     call FLRECT( 2.0,2.0, 7.0,15.0)
     call CLRPEN(21)
     call FLRECT(10.0,2.0,15.0,19.0)
     call CLRPEN(31)
     call FLRECT(18.0,2.0,23.0,10.0)
     XD = 3.2
     YD = 6.0
     call WNIMGR('MISA2.BMP', 3.0,15.2, 3.0+XD,15.2+YD,ICON)
     call WNIMGR('MISA1.BMP',11.0,19.2,11.0+XD,19.2+YD,ICON)
     call WNIMGR('MISA2.BMP',19.0+XD,10.2+YD,19.0,10.2,ICON)
     call XEND
     stop
     end


読み込んだ元の画像(160×300)

プログラム例2:読み込んだ画像を背景に図形を描画

! ... example of WNIMGR No.2 ...
     call XINT('WIN=(600,400)')
     call XVIEWP(0.0,0.0,49.5,34.0)
     call WNIMGR('J:\IMG\back.BMP',0.0,0.0,49.5,34.0,ICON)
     call PLOT(13.0,3.0,-3)
     call FRAME(0.0,0.0,25.0,20.0)
     call CLRPEN(11)
     call FLRECT( 2.0,1.0, 7.0,14.0)
     call CLRPEN(21)
     call FLRECT(10.0,1.0,15.0,18.0)
     call CLRPEN(31)
     call FLRECT(18.0,1.0,23.0, 9.0)
     call XEND
     stop
     end


入力画像(495×340)

表示例

プログラム例3:世界地図画像を読み込み経線と緯線を描画

! ... example of WNIMGR No.3 ...
      real La,Lo
      FX(Lo) = MOD(Lo+375.0,360.0)*FacX
      FY(La) = ASINH(TAN(La*Ram))*FacY+20.9
      call XINT('WIN=(800,460)')
      call XVIEWP(0.0,0.0,80.0,45.2)
      call WNIMGR('e:\files\world_img.bmp',0.0,0.0,80.0,45.2,ICON)
      if (ICON.ne.0) write(6,*)'BMP read/write error',ICON
      FacY= 51.0*0.25
      Ram = 3.1415926/180.0*0.98
      call SETIRGB(INT(Z'D0D0D0'))
      do I=-60,60,15
        Y = FY(FLOAT(I))
        call LINEX(0.0,Y,80.0,Y)
      end do
      FacX = 80.0/360.0
      do J=-15,330,15
        X = FX(FLOAT(J))
        call LINEX(X,0.0,X,45.2)
      end do
      call NEWPEN(1)
      call FRAME(0.0,0.0,80.0,45.2)
      call WNIMGW('e:\files\Chart.BMP',0,0,8,ICON)
      call XEND
      stop
      end

 白地図は,こちらのサイトから入手したミラー図法のチャートです。
 入手した白地図に MS-Paint と ePaint で海面と日本列島に色を付けました。
 サンプルプログラムでは,地図画像を読み込み経線と緯線を書き込んでいます。緯度を図形のY座標に変換するときに理論的な計算式と誤差があるため補正しています。

表示例


プログラム例4:複雑な関数式を描画

 プログラムはこちらを参照。

WNIMGRの使用例4

(w-6) WNIMGW (BMP画像の出力)

機能:

(a)描画中の図形を,8 ビット(256色)又は 24 ビット(フルカラー)の BMP形式の画像ファイルに出力する。(WinPlotG専用)

(b)表示図形を Word 文書等に組み込む際に,図形の切り出しが容易に行える。

使用法:

   CALL WNIMGW (FileName,IW,IH,IOPT,ICON)

引 数
入出力
内  容
FileName
文字型
入力
出力するビットマップ画像のファイル名。
空白を指定するとメモリーに保存する。
IW
整数型
入力
出力画像の横幅(ドット数)。
0 を指定すると表示画面の XVIEWP のサイズ。
IH
整数型
入力
出力画像の縦幅(ドット数)。
0 を指定すると表示画面の XVIEWP のサイズ。
IOPT
整数型
入力
出力する BMP 画像の形式。 8 又は 24。
8:8ビット256色カラー。24:24ビットフルカラー。
ICON
整数型
出力
= 0:正常終了。
=-1:パラメーターエラー,出力エラー他。

@ XVIEWP の領域を指定したサイズに拡大・縮小して出力する。

A 呼ばれた時点の描画データを出力する。
次の XVIEWP,又は XEND が呼ばれる前の描画途中の図形をファイル出力することが可能。

B BMP形式の画像ファイルは圧縮されていないので,最初は 8 ビット形式で出力し,希望の画質が得られない場合に 24 ビットを選択するのが望ましい。

C 8 ビットを選択したときに,使用されている色数が 256 以上の場合は,簡易な方法で減色処理を行う。GIF 形式等に変換する場合は,24 ビットで出力し他の専用ソフトを用いて減色処理する方が高画質になるケースが多い。

プログラム例:読み込んだ画像データに図形処理を追加して出力

! ... example of WNIMGW ...
     call XINT('WIN=(600,400)')
     call XVIEWP(0.0,0.0,29.4,43.5)
     call WNIMGR('J:\IMG\2018.BMP',0.0,0.0,29.4,43.5,ICON)
     call CLRPEN(51)
     call FRAME(0.0,0.0,29.4,43.5)
     call WNIMGW('TEST.BMP',0,0,8,ICON)
     call XEND
     stop
     end


出力したBMP画像(8ビット)

表示例(入力画像24ビット)