2011-06-11 14 views
5

Android'i bir oyun yazarak öğreniyorum ve grafik API'sinde sorun yaşıyorum.Kenarlıklı geçerli resim klibi üzerinde bitmapi çizim (Boya)

Bir yolun görüntüsüne bir resim çizip, sonra da Yol üzerinde kenarlık eklemek istiyorum. Resmi Yol ile kırpmayı başardım, ancak kenarlık eklemenin bir yolunu bulamıyorum. Basit olsa da, API Canvas.draw * yöntemlerinde Paint nesnesini desteklediğinden dolayı basit olurdu. Orijinal soruda

Güncelleme

, benim Yolu iki dikdörtgenleri içeren ve Christopher-souvey @ doğru cevap. Ancak, bir tane daha clipPath() yöntemi eklerken başka bir sorunla karşılaşıyorum.

Önceki kodu, bir başka çevre yolu ekleyerek güncelleştirdim.

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); 

İşte benim kodundan sonucudur: İşte benim yeni kod http://i.stack.imgur.com/8j2Kg.png

Ve bu beklediğim şudur: http://i.stack.imgur.com/iKhIr.png

Ben o iş yapmak için her şeyi özlüyor musun?

+0

DrawBitmap öğesindeki boya öğesi Kenarlık rengi değildir: http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android. graphics.Paint) –

+0

DrawRect(), drawCircle() ile Paint ile sınır oluşturabiliriz. Nasıl olur da drawBitmap() –

cevap

1

Sen drawPath önce klibi ve canvas.restore (inme yolu hatlarının içinde veya dışında meydana gelirse emin değilim) önce canvas.save koymak gerekebilir drawBitmap sonra canvas.drawPath(path, paint) kullanmayı deneyin.

+1

için işe yaramıyor Sadece bilgi için, kontur yol satırlarının dışında gerçekleşiyor –

İlgili konular