なんか既出の手法でなんとかなる(gmode 7を使う)気がするんだけどな……
まあ、とりあえず作ってみた。コードの意味は自力で解読してくれ。
dim gcolor_,3,3 ;gcolor命令用に予約
#define fontset font msgothic,99 ;ここは好みで弄ってください
#define gmes_id@ 99 ;
#module
#deffunc gcolor int r1,int g1,int b1,int r2,int g2,int b2,int r3,int g3,int b3
gcolor_@.0.0=r1,g1,b1
gcolor_@.0.1=r2,g2,b2
gcolor_@.0.2=r3,g3,b3
return
#deffunc gmes str string
id_tmp=ginfo_act
cx_tmp=ginfo_cx
cy_tmp=ginfo_cy
gcolor_1=(gcolor_@.0.0<<16)+(gcolor_@.1.0<<8)+gcolor_@.2.0
gcolor_2=(gcolor_@.0.1<<16)+(gcolor_@.1.1<<8)+gcolor_@.2.1
gcolor_3=(gcolor_@.0.2<<16)+(gcolor_@.1.2<<8)+gcolor_@.2.2
buffer gmes_id@ ;gmes_id@で指定した画面IDはgmes命令用に予約
fontset@ :mes string
mesx=ginfo_mesx :mesy=ginfo_mesy
buffer gmes_id@,mesx*2,mesy*2
title "ID1" :boxf
gradf 0,0,mesx,mesy/2,1,gcolor_1,gcolor_2
gradf 0,mesy/2,mesx,mesy-mesy/2,1,gcolor_2,gcolor_3
fontset@ :color 255,255,255 :pos mesx,0 :mes string
pos 0,mesy :gmode 7,mesx,mesy
pos 0,mesy :gcopy gmes_id@,0,0,mesx,mesy
gsel id_tmp,2
pos cx_tmp,cy_tmp :gmode 2 :gcopy gmes_id@,0,mesy,mesx,mesy
return
#global
color 128,128,128 :boxf
gcolor 0,255,0,255,0,0,0,0,255
pos 100,50 :gmes "gradation"
stop