मैं पृष्ठभूमि में दूसरी तस्वीर खींचकर और विस्तार करके तस्वीर के चारों ओर एक समोच्च बनाना चाहता था, लेकिन मैं बहुत सफल नहीं था, मैं नियमित स्ट्रोक कैसे बना सकता हूं?

मैंने जो समोच्च खींचा: तस्वीर देखने के लिए क्लिक करें

मैं जिस समोच्च को आकर्षित करना चाहता हूं: तस्वीर देखने के लिए क्लिक करें

मेरा कोड;

private Bitmap ContourBitmap() {
int strokeWidth = 8;
Bitmap originalBitmap =  BitmapFactory.decodeResource(getResources(), R.drawable.flower_icon);
Bitmap newStrokedBitmap = Bitmap.createBitmap(originalBitmap.getWidth() + 2 * strokeWidth, 
originalBitmap.getHeight() + 2 * strokeWidth, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(newStrokedBitmap);
float scaleX = (originalBitmap.getWidth() + 2.0f * strokeWidth) / originalBitmap.getWidth();
float scaleY = (originalBitmap.getHeight() + 2.0f * strokeWidth) / originalBitmap.getHeight();
Matrix matrix = new Matrix();
matrix.setScale(scaleX, scaleY);
canvas.drawBitmap(originalBitmap, matrix, null);
canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_ATOP); //Color.WHITE is stroke color
canvas.drawBitmap(originalBitmap, strokeWidth, strokeWidth, null);
}
1
Anonim 25 अप्रैल 2020, 04:16

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि तुम सही रास्ते पर हो...

यहाँ एक रणनीति है, स्केलिंग के बजाय बस एक ही मूल चित्र को हर बार थोड़ा ऑफसेट करने के लिए कुछ बार ड्रा करें, नीचे नमूना देखें:

var canvas = document.getElementById('canvas')
var ctx = canvas.getContext('2d')
var img = new Image;
img.onload = draw;
img.src = "http://i.stack.imgur.com/UFBxY.png";

var s = 10, // thickness scale
  x = 15, // final position
  y = 15;

function draw() {
  ctx.globalAlpha = 0.2
  ctx.filter = 'brightness(0%)'
  for (i = 0; i < 360; i++)
    ctx.drawImage(img, x + Math.sin(i) * s, y + Math.cos(i) * s);
  ctx.globalAlpha = 1
  ctx.filter = 'none'
  ctx.drawImage(img, x, y);
}
<canvas id=canvas width=350 height=600></canvas>

मैंने एक filter = 'brightness(0%)' आवेदन किया था लेकिन आप और भी बहुत कुछ कर सकते हैं:
https://developer.mozilla.org/en-US/ डॉक्स/वेब/एपीआई/CanvasRenderingContext2D/फ़िल्टर

मैं एचटीएमएल कैनवास का उपयोग कर रहा हूं लेकिन उसी विचार को एंड्रॉइड कैनवास में अच्छी तरह से "अनुवाद" करना चाहिए।

1
Helder Sepulveda 26 अप्रैल 2020, 00:56