问题描述
BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.add1);
int height = bd.Bitmap.Height;
int width = bd.Bitmap.Width;
Toast.MakeText(this,width.ToString() + " " + height.ToString(),ToastLength.Long).Show();
add1.png的宽高是55*55像素,但是Toast显示的是110*110像素,为什么?
解决方法
此问题是由设备分辨率引起的。 bitmap.Width 返回的值会根据不同的dpi进行调整,不同机型这个dpi可能不同。如果设备具有更高的分辨率,则此处可能会打印更高的数字。
要得到图片文件的原始大小,需要将大小除以dpi值。
var density = Resources.DisplayMetrics.Density;
BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.test);
var the_original_height = bd.Bitmap.Height / density;
var the_orignial_width = bd.Bitmap.Width / density;
Toast.MakeText(this,the_original_height.ToString() + "*" + the_original_height.ToString(),ToastLength.Long).Show();