我无法弄清楚如何调整位图的大小。基于这里的帖子Bitmap.createScaledBitmap是这样做的方法,但它对我来说不起作用。由于视图的性质,我在onDraw中做了所有事情所以我不认为我可以使用布局或ImageView。这就是我正在做的事情:
我有帝国大厦200x200的图像。我运行此代码进行设置:
private void setupBitmap() {
int bitmapSize = 100;
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);
}
这是我的onDraw:
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(myBitmap, 0, 0, null);
}
这是结果,请注意图像刚裁剪而未调整大小:
对于s& g,如果我设置bitmapSize = 200,它看起来像这样:
答案 0 :(得分:3)
好的,我已经弄清楚了。对我来说有用的是在创建位图时保留位图。然后,当您在画布上绘制它时,将其设置为正确的大小。我假设createScaledBitmap函数被破坏了?
myCanvas.drawBitmap (landmarkImg, null, new RectF((float)0,(float)0,newWidth,newHeight),null);
答案 1 :(得分:0)
您可以尝试使用ImageView:
ImageView iv = (ImageView) findViewById(R.id.imageview);
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);
iv.setImageBitmap(myBitmap);