में "छेद" चित्रण करना मैं कस्टम दृश्य के ऑनड्रा विधि में इस तरह का एक आकार खींचने की कोशिश कर रहा हूं।कैनवास
दुर्भाग्य से, मैं कैनवास पर पारदर्शी सर्कल "कट" नहीं कर सकता, (एक रंग के साथ एक वृत्त खींचकर। ट्रांसपेरेंट)।
क्या मुझे पहले किसी अन्य बिटमैप में आकार खींचना चाहिए, फिर इसे ड्रॉ द्वारा प्रदान किए गए कैनवास पर खींचना चाहिए? या यह करने के लिए यह एक बेहतर (सरल) तरीका है?
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Color.TRANSPARENT);
mPaint.setStrokeWidth(4);
mPaint.setStyle(Style.STROKE);
canvas.drawColor(getResources().getColor(R.color.black_overlay));
canvas.drawCircle(-3*(this.getBottom()-this.getTop())/4, (this.getTop()+this.getBottom())/2, this.getBottom()-this.getTop(), mPaint);
पुनश्च::
यहाँ कोड मैंने कोशिश की (Color.WHITE के साथ काम करता है) मैं वास्तविक आकृति मैं चाहता था मिल गया Color.WHITE का उपयोग करते समय:
समाधान
@Override
public void onDraw(Canvas canvas)
{
mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mCanvas.drawColor(getResources().getColor(R.color.black_overlay));
mCanvas.drawCircle(-3*(getHeight())/4, (getHeight())/2, getHeight(), mPaint);
canvas.drawBitmap(mBitmap, 0, 0, null);
}
with
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStrokeWidth(4);
mPaint.setStyle(Style.STROKE);
mPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
नोट: createBitamp और नए कैनवास को ऑन ड्रा विधि से बाहर ले जाना चाहिए।
अच्छी तरह से, उपयोग छवि यदि आप देखते हैं कि मैन्युअल बहुत ही जटिल है –
रंग ट्रांसपेरेंट क्या है? आपने जो कुछ भी कोशिश की है उसका कुछ कोड क्यों पोस्ट न करें? देखें कि यह मदद करता है - http://stackoverflow.com/questions/9988671/android-r-color-transparent-not-fully-transparent – Sundeep
रंग। ट्रांसपेरेंट एक एंड्रॉइड स्थिर है। – Tryum