嗨,我需要一个方向来踢开始。 我知道我可以创建一个矩形或圆形并在其中填充颜色。因此,我想要创建一个随机形状(如图标图像)并在其中填充颜色。什么是正确的做法?我可以将图像导入到画布并在特定位置更改其颜色吗?android:在Canvas中创建图像并填充颜色
这里是我迄今所做的: 所以我创建了一个帆布收到位图 画形状(矩形和圆形),现在我想添加形状像电话图标并改变其颜色 我的代码:
public class MainActivity extends Activity {
Context ctx =this;
Bitmap mcontactPhoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bitmap bp = drawTextToBitmap (this,R.drawable.bitmap_le_lo,"MMMM","blah",200);
Drawable d = new BitmapDrawable(getResources(), bp);
iv.setImageDrawable(d);
}
public Bitmap drawTextToBitmap(Context gContext,
int gResId,
String gText,String hText ,int TextSize) {
int m = TextSize;
Resources resources = gContext.getResources();
float scale = resources.getDisplayMetrics().density;
Bitmap bitmap =
BitmapFactory.decodeResource(resources, gResId);
android.graphics.Bitmap.Config bitmapConfig =
bitmap.getConfig();
// set default bitmap config if none
if(bitmapConfig == null) {
bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
}
// resource bitmaps are imutable,
// so we need to convert it to mutable one
bitmap = bitmap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bitmap);
Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG);
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.WHITE);
mPaint.setStrokeWidth(8);
canvas.drawRect(71, 71, 320, 320, mPaint);
canvas.drawRect(391, 71, 1189, 320, mPaint);
canvas.drawRect(71, 390, 1189, 639, mPaint);
canvas.drawCircle(71, 71, 40, paint);
canvas.drawCircle(391, 71, 40, paint);
canvas.drawCircle(71, 390, 40, paint);
canvas.drawCircle(71, 71, 40, mPaint);
canvas.drawCircle(391, 71, 40, mPaint);
canvas.drawCircle(71, 390, 40, mPaint);
int x = 420;
int y = (249+m)/2+71/2;
paint.setTextSize(m);
paint.setColor(Color.BLUE);
canvas.drawText(gText, x, y, paint);
int x1 = 101;
int y1 = (391-71/2)+(249+m)/2;
paint.setTextSize(m);
paint.setColor(Color.WHITE);
canvas.drawText(hText, x1, y1, paint);
paint.setTextSize(50);
paint.setColor(Color.WHITE);
canvas.drawText("1", 71-12.5f, 71+12.5f, paint);
return bitmap;
}
}
看看这个答案:http://stackoverflow.com/a/5208500/852049 – Karolis
Karolis谢谢!你可以提出编辑问题吗? –