1

2 つのキャンバスを重ねる方法を考えています。一方にはビットマップがあり、もう一方には実際に描画するものがあります。

基本的に私が持っているものは次のとおりです。

    Bitmap newBitmap = Bitmap.createBitmap(img.getWidth(), img.getHeight(),
            Bitmap.Config.RGB_565);
    Canvas newCanvas = new Canvas();
    newCanvas.setBitmap(newBitmap);
    if (img != null) {
        newCanvas.drawBitmap(img, 0, 0, null);
    }
    mBitmap = newBitmap;
    imageCanvas = newCanvas;

    mCanvas = new Canvas();
    drawBitmap = Bitmap.createBitmap(img.getWidth(), img.getHeight(),
            Bitmap.Config.RGB_565);
    mCanvas.setBitmap(drawBitmap);

mCanvasはユーザーが描画する場所imageCanvasであり、ビットマップが描画される場所です。

画像は白黒で、常に黒い線が透けて見えるようにしたいので、スタックの一番上に配置します。

画像の白い部分が透明である必要があることを確認する必要があるようです。これは、画像をロードするときに行う必要があるかもしれません。

では、これら 2 つのキャンバスを同じビューに重ねてdrawLine、一番下のキャンバスに表示するにはどうすればよいでしょうか。

私はこの質問を見ましたが、似ているとは思いません:

レイヤード画像とキャンバス

4

1 に答える 1

0

解決策は思ったより簡単でした。

ユーザーが透明な画像を描画できるようにするメニューオプションがあるため、画像の黒い線のみが表示され、画像の残りの部分は透明になります。

これを行うことで、ユーザーが描画しているビットマップを最初に描画し、次にほとんど透明な色で画像を描画できます。

これにより、黒い線が常に見えるようになります。

見栄えを良くするために PorterDuff xfer モードを使用する必要があるかもしれませんが、これは私の最初の要件を満たしています。

描画可能な画像を背景に配置してもうまくいかないことに驚きました。

このすべてをカスタム ビューで行っています。

于 2011-07-15T03:56:11.363 に答える