Android学习笔记进阶16之BitmapShader

摘要:
看看效果图!

<1>简介

具体的看一下博文:Android学习笔记进阶15之Shader渲染

public BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY)

调用这个方法来产生一个画有一个位图的渲染器(Shader)。

bitmap 在渲染器内使用的位图

tileX The tiling mode for x to draw the bitmap in. 在位图上X方向花砖模式

tileY The tiling mode for y to draw the bitmap in. 在位图上Y方向花砖模式

TileMode:(一共有三种)

CLAMP :如果渲染器超出原始边界范围,会复制范围内边缘染色。

REPEAT :横向和纵向的重复渲染器图片,平铺。

MIRROR :横向和纵向的重复渲染器图片,这个和REPEAT 重复方式不一样,他是以镜像方式平铺。

还是不太明白?那看一下效果图吧!

Android学习笔记进阶16之BitmapShader第1张Android学习笔记进阶16之BitmapShader第2张

REPEAT MIRROR

<2>具体实现

Android学习笔记进阶16之BitmapShader第3张

  1. packagexiaosi.BitmapShader;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. publicclassBitmapShaderActivityextendsActivity{
  5. /**Calledwhentheactivityisfirstcreated.*/
  6. privateBitmapShadersbitmapShaders=null;
  7. @Override
  8. publicvoidonCreate(BundlesavedInstanceState){
  9. super.onCreate(savedInstanceState);
  10. bitmapShaders=newBitmapShaders(this);
  11. setContentView(bitmapShaders);
  12. }
  13. }

BitmapShaders.Java

  1. packagexiaosi.BitmapShader;
  2. importandroid.content.Context;
  3. importandroid.graphics.Bitmap;
  4. importandroid.graphics.BitmapShader;
  5. importandroid.graphics.Canvas;
  6. importandroid.graphics.Paint;
  7. importandroid.graphics.Shader;
  8. importandroid.graphics.drawable.BitmapDrawable;
  9. importandroid.graphics.drawable.ShapeDrawable;
  10. importandroid.graphics.drawable.shapes.OvalShape;
  11. importandroid.view.View;
  12. publicclassBitmapShadersextendsView
  13. {
  14. privateBitmapShaderbitmapShader=null;
  15. privateBitmapbitmap=null;
  16. privatePaintpaint=null;
  17. privateShapeDrawableshapeDrawable=null;
  18. privateintBitmapWidth=0;
  19. privateintBitmapHeight=0;
  20. publicBitmapShaders(Contextcontext)
  21. {
  22. super(context);
  23. //得到图像
  24. bitmap=((BitmapDrawable)getResources().getDrawable(R.drawable.h)).getBitmap();
  25. BitmapWidth=bitmap.getWidth();
  26. BitmapHeight=bitmap.getHeight();
  27. //构造渲染器BitmapShader
  28. bitmapShader=newBitmapShader(bitmap,Shader.TileMode.MIRROR,Shader.TileMode.REPEAT);
  29. }
  30. @Override
  31. protectedvoidonDraw(Canvascanvas)
  32. {
  33. super.onDraw(canvas);
  34. //将图片裁剪为椭圆形
  35. //构建ShapeDrawable对象并定义形状为椭圆
  36. shapeDrawable=newShapeDrawable(newOvalShape());
  37. //得到画笔并设置渲染器
  38. shapeDrawable.getPaint().setShader(bitmapShader);
  39. //设置显示区域
  40. shapeDrawable.setBounds(20,20,BitmapWidth-60,BitmapHeight-60);
  41. //绘制shapeDrawable
  42. shapeDrawable.draw(canvas);
  43. }
  44. }

免责声明:文章转载自《Android学习笔记进阶16之BitmapShader》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小游戏流量主广告接入指南!SQL SERVER 查看数据库执行过哪些语句(SQL历史语句记录)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c#生成cad缩略图或者图片

struct BITMAPFILEHEADER{public short bfType;public int bfSize;public short bfReserved1;public short bfReserved2;public int bfOffBits;}public static System.Drawing.Image GetDwgImag...

Android学习分享:执行某ViewGroup的动画时,子控件太多导致动画执行卡顿的问题

最近在项目中遇到一个问题,我有一个LinearLayout,里面装载了许多ImageView控件,ImageView控件显示着自己的图片,这个LinearLayout支持双指缩放,缩放采用ScaleAnimation来实现,但是但是在缩放过程中,屏幕十分卡顿,缩放效果根本没有跟上手指的缩放动作。后来在Google上查了一番,查到一个API,叫setAnim...

python中bitmap的参数

Tkinter Bitmaps: 你会使用这个属性显示一个位图。有以下类型的可用位图. 你会使用这个属性显示一个位图。有以下类型的可用位图.: "error" "gray75" "gray50" "gray25" "gray12" "hourglass" "info" "questhead" "question" "warning"...

byte[] 与 bitmap 转换

public static Bitmap BytesToBitmap(byte[] Bytes){MemoryStream stream = null;try{stream = new MemoryStream(Bytes);return new Bitmap((Image)new Bitmap(stream));}catch (ArgumentNullE...

Django:RestFramework之-------渲染器

12.渲染器 from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer,AdminRenderer class TestView(APIView): #BrowsableAPIRenderer页面渲染更加好看 #JSONRenderer 返回json数据...

C# 使用Bitmap类进行图片裁剪

各位朋友,大家好!前些天在博客园申请开通了自己的博客,主要是为了能和各位大侠和菜鸟分享软件开发这点乐趣,当然,也是自己经验积累和奋斗历程的简要版写照吧。好了,跑题了,下面就让我们一起去研究下C#中怎样使用Bitmap类裁剪图片吧!Let's go!(行こう!) 前几天,公司分派我个任务——完成在Mapwin(手机游戏地图编辑器)生成的地图txt文件中添加自...