मैं एक गेम लिखकर एंड्रॉइड सीख रहा हूं और ग्राफिक्स एपीआई में समस्या है।सीमा के साथ कैनवास में वर्तमान क्लिप पर बिटमैप बनाएं (पेंट)
मैं एक छवि को पथ के आकार में खींचना चाहता हूं और फिर पथ पर सीमा जोड़ना चाहता हूं। मैं पथ के साथ छवि को क्लिप करने में सक्षम था लेकिन उस पर सीमा जोड़ने का कोई तरीका नहीं मिला। हालांकि यह आसान होगा क्योंकि एपीआई कैनवास.draw * विधियों पर पेंट ऑब्जेक्ट का समर्थन करता है।
अद्यतन
मूल प्रश्न में, मेरा पथ दो आयतों में शामिल है और @ क्रिस्टोफर-souvey सही ढंग से जवाब दे दिया। हालांकि, एक और क्लिपपैथ() विधि जोड़ने से निपटने पर मुझे एक और समस्या मिलती है।
मैंने पथ में एक और सर्कल जोड़कर पिछले कोड को अपडेट किया।
Bitmap srcImage = BitmapFactory.decodeStream(getAssets().open("panda.jpg"));
Bitmap bitmapResult = Bitmap.createBitmap(srcImage.getWidth(), srcImage.getHeight(), Bitmap.Config.ARGB_8888);
Path path = new Path();
// This is my border
Paint paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.RED);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
Canvas canvas = new Canvas(bitmapResult);
// Overlay two rectangles
path.addRect(10, 10, 70, 70, Path.Direction.CCW);
path.addRect(40, 40, 120, 120, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.INTERSECT);
path.reset();
path.addCircle(40, 80, 20, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.DIFFERENCE);
// The image is drawn within the area of two rectangles and a circle
// Although I suppose that puting Paint object into drawBitmap() method will add a red border on result image but it doesn't work
canvas.drawBitmap(srcImage, 0, 0, paint);
((ImageView)this.findViewById(R.id.imageView1)).setImageBitmap(bitmapResult);
यहाँ मेरी कोड से परिणाम है:: यह मेरा नया कोड है http://i.stack.imgur.com/8j2Kg.png
और यह मैं क्या उम्मीद है: http://i.stack.imgur.com/iKhIr.png
मैं इसे काम करने के लिए कुछ भी याद आती है है?
drawBitmap में पेंट तत्व सीमा रंग नहीं है: http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android। ग्राफिक्स.पेंट) –
हम पेंट के साथ drawRect(), drawCircle() के साथ सीमा बना सकते हैं। यह drawBitmap() –