Android-V11 を使用して RDP クライアント アプリケーションを開発しています。
サーバー:画面を4分割し、各フレームの画像データをbyte[]、left、top、right、bottom、画面解像度(幅→1024/1280、高さ→768/1024)の値で送信クライアントに。
クライアント: サーバーから受信した画像を表示するためにサーフェス ビューを使用しています。タブレットの画面にぴったり収まるように、4 フレーム (サーバーの 1 画面) を表示する必要があります。
サンプルコード:
class mySurfaceView extends SurfaceView implements SurfaceHolder.Callback
{
class TutorialThread extends Thread
{
@Override
public void run()
{
Canvas c = null;
// Socket commnuication
......
Bitmap bmp;
while(true){
c=null;
//logic to get the details from server
.....
bmp = BitmapFactory.decodeByteArray(imageBytes, 0,imageBytes.length);
//Logic to calculate the Top Left, right bottom corners to divide the tablet screen into 4parts for 4 frames receiving from server
.....
//Frame rectangle for each frame
Rect rect = new Rect(newLeft, newTop,newWidth,newHeight);
//display image
try{
c = _surfaceHolder.lockCanvas(rect);
if(c!=null){
synchronized (_surfaceHolder)
{
c.drawBitmap(scaledBitmap, newLeft,newTop, paint);
}
}
}
finally{
if(c!=null){ _surfaceHolder.unlockCanvasAndPost(c);
}
}
//End of while
}
//End of run()
}
//End Tutorial Thread
}
//End of surfaceView
}
ビットマップを四角形に正確に合わせることができません。フレームはタブレットに表示され、その間にギャップがあります。
コードをデバッグした後、取得されたビットマップ (bmp) の幅は 514 で、四角形 (rect) の幅は 640 のようです。したがって、ビットマップは四角形に収まりません。
ビットマップを四角形に正確に合わせる方法を教えてください。
注:画像をピンチズームする必要もあります。
ありがとう、よろしくヤミニ。