protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Shader shader = new BitmapShader(bar_bitmap, Shader.TileMode.MIRROR, Shader.TileMode.MIRROR);
recPaint.setShader(shader);
canvas.drawRect(distance, endHeight, distance + viewWidth, startHeight, recPaint); 
}我画了一个矩形,想用资源图片去填充该矩形,但是图片过大,在矩形中只显示了一部分,不知道是不是设置的模式的问题,各种模式我也试过了都不能按照矩形的大小自动填充。矩形是我自定义的view的一部分,我尝试过在activity中new了这个view,然后view.setbackgroundResource(),可以使图片自适应view的大小,但是我的目的是填充那个矩形,并不是整个view(我尽量吧问题说清楚,不清楚再补充)

解决方案 »

  1.   

    虽然不太懂你的做法。不过要是我想实现这个功能的话,该view的layoutParams参数设置为你那个矩形的大小,然后根据这个大小,对图片进行缩放处理
      

  2.   

    canvas.drawRect(distance, endHeight, distance + viewWidth, startHeight, recPaint);  我写的前四个参数已经给出了矩形的大小和坐标位置,所以对于矩形来说大小已经是确定的了,但我用带图片填充的画笔去draw这个矩形的时候,图片只画了一部分
      

  3.   

    用Bitmap.createBitmap把图片缩放到矩形大小
      

  4.   

    可以直接将图片画到指定大小的矩形中。看看apidemo就ok了。
    另外,填充矩形绝对会使你的图片失真。因为指定了矩形大小,又要图片填充整个矩形,图片就会缩放和拉伸,这会改变图片宽高比,图片失真会比较严重。
    我刚做了一个显示图片缩略图的功能,明天写个博客分享给大家。
      

  5.   

    其实我不担心图片失真,我可以用.9path去做图片,三楼的createBitmap是个好建议,我还没尝试,回家有空再试试
      

  6.   


    问题解决了 Bitmap.createBitmap是从原有图片去截取一定范围的图片像素,canvas.drawBitmap才是真正开始画图片 ,多谢你的意见// 使用图片填充的代码:
    Bitmap bar_bitmap = ((BitmapDrawable) this.getResources().getDrawable(
    drawableIds[whichColor])).getBitmap();
    Rect rect = new Rect((int) distance, (int) endHeight,
    (int) (distance + viewWidth), (int) startHeight);
    canvas.drawBitmap(bar_bitmap, null, rect, null);