Dropbox

KKJConvのプログラム内でランドスケープ、ポートレイトの切り替え(すなわち画面の回転)が出来ないものかと調査してみました。APIドキュメントを眺めていただけでは分からなかったのですが本家Sunのフォーラムに、そのものズバリの答えが書いてありました。それを読んでいただければ内容は分かるのですが、自分自身のメモ代わりにもなるので簡単に解説を書いておきます。

自前でバッファーを用意します。大きさは画面を横向きにしたものにします。そこに通常通りGraphicsクラスを使用して画面の描画を行います。その後 drawRegion メソッドで本物の画面に回転方向を指定して内容を転送するだけです。

私のテストプログラムでは、Canvasクラスを継承したもののクラス変数としてバッファーを定義、

Image imgBuff;

コンストラクターで領域を確保します。

imgBuff = Image.createImage(iWidth, iHeight);

iWidthは実画面のHieght, iHeightは実画面のWidthが入っているものとします。paintメソッドにて、このimgBuffに描画して最後に実画面に反映します。

public void paint(Graphics real_g)
{
    Graphics g = imgBuff.getGraphics();
    // g に対して通常のdrawを行う
    real_g.drawRegion(imgBuff, 0, 0, iWidth, iHeight,
    Sprite.TRANS_ROT90, 0, 0, Graphics.LEFT|Graphics.TOP);
}
Trackback

no comment untill now

Add your comment now