मैं आईफोन के अमेज़ॅनोग्राफ के समान एप्लिकेशन पर काम कर रहा हूं जिसे कैलिडोस्कोप या मंडला भी कहा जाता है।आईफोन के अमेज़ॅनोग्राफ ऐप के समान कैनवास सामग्री को कॉपी करें
अब तक मैं कोशिश की है और कहा कि एप्लिकेशन
मैं कैनवास विस्तार किया है और एक कस्टम कैनवास बना दिया है, जहां मैं छवि के लिए इसी तरह 9 भागों में और ड्रा विधि में कैनवास बांट दिया है में से एक विशेष लेआउट बना दिया है मैंने कैनवास घुमाया है और लूप के लिए अपनी सामग्री कॉपी की है। यहाँ इस परिपत्र विभाजन आकार
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.madala.mandaladrawing.R;
import com.madala.mandaladrawing.model.DrawingEvent;
import com.madala.mandaladrawing.utils.Common;
public class CanvasView extends View {
private final Context context;
private Bitmap bitmap;
private Canvas bitmapCanvas;
private Paint bitmapPaint;
private Path path = new Path();
private Paint brushPaint;
private int numberOfMirror = 5;
private int cx, cy;
public CanvasView(Context context) {
super(context);
this.context = context;
init();
}
public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
init();
}
public CanvasView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
init();
}
private void init() {
brushPaint = createPaint();
brushPaint.setColor(0xffffffff);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap, 0, 0, bitmapPaint);
canvas.drawPath(path, brushPaint);
for (int i = 1; i < numberOfMirror; i++) {
canvas.rotate(360f/numberOfMirror, cx, cy);
canvas.drawPath(path, brushPaint);
}
}
public void clearCanvas(){
bitmapCanvas.drawColor(0, PorterDuff.Mode.CLEAR);
invalidate();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
setLayerType(View.LAYER_TYPE_HARDWARE, null);
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
bitmapCanvas = new Canvas(bitmap);
bitmapPaint = new Paint(Paint.DITHER_FLAG);
cx = w/2;
cy = h/2;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(x, y);
break;
case MotionEvent.ACTION_MOVE:
path.lineTo(x, y);
break;
case MotionEvent.ACTION_UP:
path.lineTo(x, y);
drawToCanvas(path, brushPaint);
path.reset();
break;
default:
return false;
}
invalidate();
return true;
}
private void drawToCanvas(Path path, Paint brushPaint) {
bitmapCanvas.drawPath(path, brushPaint);
for (int i = 1; i < numberOfMirror; i++) {
bitmapCanvas.rotate(360f/numberOfMirror, cx, cy);
bitmapCanvas.drawPath(path, brushPaint);
}
}
public int getCurrentBrushColor() {
return brushPaint.getColor();
}
public void setCurrentBrushColor(int color) {
brushPaint.setColor(color);
}
private Paint createPaint() {
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setStrokeWidth(8f);
p.setStyle(Paint.Style.STROKE);
p.setStrokeJoin(Paint.Join.ROUND);
p.setStrokeCap(Paint.Cap.ROUND);
return p;
}
}
मैं एक बॉक्स में आकर्षित करने के लिए चाहते हैं के लिए कार्यक्षमता को प्राप्त करने में सक्षम नहीं हूँ और यह अन्य बक्से में कॉपी किया जाना चाहिए के लिए अपने कैनवास वर्ग कोड है । यह कैसे प्राप्त किया जा सकता है एक छोटी सी गाइड भी मददगार होगा?
क्या आप कृपया मेरे समाधान की जांच कर सकते हैं और प्रतिक्रिया दे सकते हैं? मुझे बस दो प्रतिनिधि अंक काट दिया गया क्योंकि उत्तर समय सीमा से पहले स्वीकार नहीं किया गया था। धन्यवाद –