Android中在Bitmap上畫網格線
阿新 • • 發佈:2018-11-11
傳入一個bitmap圖片,和指定網格線的間隔(以畫素為單位),返回新的帶網格線的Bitmap
private static Bitmap drawBackground(Bitmap bitmap,int pixInterval) { /** * 注意多個createBiamap過載函式,必須是可變點陣圖對應的過載才能繪製 * bitmap: 原影象 * pixInterval: 網格線的橫豎間隔,單位:畫素 */ Bitmap copy = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888); //很重要 Canvas canvas = new Canvas(copy); //建立畫布 Paint paint = new Paint(); //畫筆 paint.setStrokeWidth(1); //設定線寬。單位為畫素 paint.setAntiAlias(true); //抗鋸齒 paint.setColor(Color.RED); //畫筆顏色 canvas.drawBitmap(bitmap,new Matrix(),paint); //在畫布上畫一個和bitmap一模一樣的圖 //根據Bitmap大小,畫網格線 //畫橫線 for (int i = 0; i < bitmap.getHeight() / pixInterval; i++) { canvas.drawLine(0, i * pixInterval, bitmap.getWidth(), i * pixInterval, paint); } //畫豎線 for (int i = 0; i < bitmap.getWidth() / pixInterval; i++) { canvas.drawLine(i * pixInterval, 0, i * pixInterval, bitmap.getHeight(), paint); } return copy; }
效果圖:間隔80畫素:
注意點:只有在可變的bitmap上才能進行矩形、圓形、線的繪製。
其中Bitmap.create()有很多過載方法,必須選擇返回值為可變bitmap的方法。
比如:Bitmap.createBitmap(Bitmap bitmap); 和 Bitmap.createBitmap(Bitmap source,int x,int y,int width,int height)這兩種型別就是不可變的。編譯器會報錯,原因是不能在返回的bitmap上繪製。