android画阴影图,android画出图片阴影!!!!!!!!!!!!!!

void drawAt(Canvas canvas, Drawable drawable, int x, int y, boolean shadow)这个函数是Overlay具有的,当我们要在地图上作标记时候希望有阴影效果,就在draw中使用此函数即可,使shadow为false.下面是此函数的具体实现。

protected static void

drawAt(Canvas canvas, Drawable drawable, int x, int y, boolean shadow)

{

...

if (shadow)

drawable.setColorFilter(0x7F000000, PorterDuff.Mode.SRC_IN);

canvas.save();

canvas.translate(x, y);

if (shadow) {

canvas.skew(-0.9F, 0.0F);

canvas.scale(1.0F, 0.5F);

}

drawable.draw(canvas);

if (shadow)

drawable.clearColorFilter();

canvas.restore();

}

@Override protected void

onDraw(Canvas canvas)

{

super.onDraw(canvas);

int nX = 100;

int nY = 50;

_DrawShadowImg(canvas, nX, nY);

_DrawNormalImg(canvas, nX, nY);

}

private void

_DrawNormalImg(Canvas canvas, int nX, int nY)

{

canvas.save(Canvas.MATRIX_SAVE_FLAG);

canvas.translate(nX, nY);

m_dw.draw(canvas);

canvas.restore();

}

private void

_DrawShadowImg(Canvas canvas, int nX, int nY)

{

canvas.save(Canvas.MATRIX_SAVE_FLAG);

m_dw.setColorFilter(0x7f000000, PorterDuff.Mode.SRC_IN);

canvas.translate(nX, nY);

canvas.skew(-0.9F, 0.0F);

canvas.scale(1.0F, 0.5F);

m_dw.draw(canvas);

m_dw.clearColorFilter();

canvas.restore();

}

_DrawShadowImg() 就是负责绘制阴影效果的函数。

这个函数主要就是运用 matrix与drawable 的 color filter 這两个功能。首先是 m_dw.setColorFilter(),將整个力道睥颜色都转成半透明的黑色。接着canvas.translate()将卒标第原点移到nX, nY 的位置,而 canvas.skew() 与 canvas.scale()则是将卒标系做个经轴方向的倾斜与y轴方向的大小压缩,最后,调用m_dw.draw() 把图片画出来,阴影效果实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值