2012-03-29 107 views
0

我有一个派生自ImageView的课程。在其onDraw方法重写中,我需要将视图的内容复制到位图中。副本必须包含整个内容而不仅仅是可见部分。如何获取该内容的大小

要完成此操作,我创建一个位图并调用super.onDraw传递此位图的画布作为参数。然后我将得到的位图绘制到onDraw通过的画布上。代码如下。

我的问题是我的位图应该有多大?目前我使用getWidth()getHeight()作为位图的尺寸。但这不起作用,因为它返回视图大小,而不是内容大小。我正在寻找一种方法,在根据视图的scaleType调整了drawable的大小后获取内容的大小。

drawable的大小不起作用,因为drawable可能与内容大小不同。

 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     if (_bitmap == null) 
     { 
      final int w = getWidth(); 
      final int h = getHeight();
_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); _canvas = new Canvas(_bitmap);
super.onDraw(_canvas); } canvas.drawBitmap(_bitmap, 0, 0, null); }

+0

什么问题呢?代码是否工作? – noob 2012-03-29 15:07:33

+0

我编辑了问题并更改了标题 – akonsu 2012-03-29 16:27:21

回答

0

你有没有看着

getDrawingCache(布尔自动量程)

返回该视图绘图缓存位图。

将autoScale设置为true。

0

这样,你得到的测量和布局后的尺寸。你应该得到的基本绘制对象,并调用getIntrinsicWidth我猜

+0

谢谢,但这不起作用,我编辑了问题以澄清 – akonsu 2012-03-29 16:30:15