2

BrowserField に表示されている Web ページのコンテンツのビットマップを取得したいと考えています。したがって、ブラウザ フィールドの Graphic-object が必要です。残念ながら、ペイント方法は保護されています。これを取得する方法はありますか?

ありがとう

4

1 に答える 1

0

通常、フィールドを使用してカスタム描画を行いたい場合。フィールドのグラフィックス コンテキストに描画するには、Field をサブクラス化し、paintメソッドをオーバーライドします。ただし、BrowserField に関しては、finalと宣言されているため、それを行うことはできません。

ただし、これには回避策があります。Manager をサブクラス化し、その Manager のインスタンスに BrowserField を追加できます。たとえば、BrowserField インスタンスを VerticalFieldManager に追加する場合は、次のコードを使用して、ブラウザーが描画される Graphics オブジェクトにアクセスできます。このサンプル コードでは、グラフィックス オブジェクトとマネージャーのスーパークラスの実装を使用してビットマップに描画していることがわかります。次に、そのビットマップが画面に描画されます。

VerticalFieldManager vfm = new VerticalFieldManager() {
    // Override to gain access to Field's drawing surface
    //
    protected void paint(Graphics graphics) {

        // Create a bitmap to draw into 
        //
        Bitmap b = new Bitmap(vfm.getVirtualWidth(), vfm.getVirtualHeight());

        // Create a graphics context to draw into the bitmap
        //
        Graphics g = Graphics.create(b);

        // Give this graphics context to the superclass implementation
        // so it will draw into the bitmap instead of the screen
        //
        super.paint(g);

        // Now, draw the bitmap
        //
        graphics.drawBitmap(0, 
                0, 
                vfm.getVirtualWidth(), 
                vfm.getVirtualHeight(), 
                b, 
                0, 
                0);

    }
};

そして、マネージャーのコンテンツを含むビットマップがあります。ただし、これは大量のメモリを消費する可能性があることに注意してください。

于 2011-09-25T04:13:22.280 に答える