1

このSurfaceViewがあり、バーをドラッグするとzoomControllerが増加し、逆にドラッグするとzoomControllerが減少します。

効果は写真を拡大および縮小することです。私が抱えている問題は、古い写真が残っているため、それを本当に大きくしてから小さくすると、大きな画像が小さな画像の後ろに残ることです。なぜこれが起こっているのですか?

public SView(コンテキスト コンテキスト) { スーパー(コンテキスト); ズームコントローラ = 100; x = 100; y = 100;

        holder = getHolder();
        holder.setFormat(PixelFormat.TRANSPARENT);
    }
    public void run() 
    {
        while(isItOk)
        {
            if(!holder.getSurface().isValid())
            {
                continue;
            }
            Canvas c = holder.lockCanvas();
            Paint p = new Paint();

            tattoo = this.getResources().getDrawable(R.drawable.sample);
            if(tattoo != null)
            {
                tattoo.setBounds(getWidth() / 2 - zoomController - x, getHeight() / 2 - zoomController - y, getWidth()/ 2 + zoomController - x, getHeight()/ 2 + zoomController - y);
                tattoo.draw(c);
            }
            holder.unlockCanvasAndPost(c);
        }
    }
4

1 に答える 1

0

SurfaceViewおっしゃる通り、古いイメージが払拭されていません。これは意図的なものです。クリアしたい場合は、手動で行う必要があります。画像を(再)描画する前に、これを試してください:

Canvas.drawColor(Color.BLACK);
于 2012-11-12T18:28:50.467 に答える