สร้างเงาสำหรับบิตแมปในมุมมองที่กำหนดเอง

ฉันมีมุมมองแบบกำหนดเองซึ่งมีบิตแมปบางส่วน และฉันต้องการกำหนดเงาให้กับบิตแมปเหล่านั้น เพื่อสิ่งนั้น ฉันจึงใช้โค้ดนี้:

shadowPaints=new Paint(Paint.ANTI_ALIAS_FLAG);
shadowPaints.setShadowLayer(10.0f, 3.0f, 2.0f, Color.BLACK);
canvas.drawBitmap(bmp, matrix, shadowPaints);   
setLayerType(LAYER_TYPE_SOFTWARE, shadowPaints);

และผลลัพธ์ของฉันคือ ป้อนคำอธิบายรูปภาพที่นี่ ดังที่คุณเห็นว่าเงาของฉันจริงๆ แล้วเป็นบิตแมปอื่นที่มีตำแหน่ง x และ y ต่างกัน แต่สิ่งที่ฉันต้องการคือเงาของฉันเป็นบิตแมปสีทึบ
ใครสามารถช่วยฉันเกี่ยวกับเรื่องนี้ได้บ้าง?


person max    schedule 21.07.2016    source แหล่งที่มา
comment
คุณสามารถโพสต์โค้ดทั้งหมดของมุมมองที่คุณกำหนดเองได้หรือไม่   -  person Divers    schedule 21.07.2016
comment
ขอบคุณสำหรับความสนใจ. โค้ดมีขนาดใหญ่เกินไป แต่ถ้าคุณแสดงวิธีการทำงานในมุมมองแบบกำหนดเองแบบธรรมดาให้ฉันดู ฉันมั่นใจว่ามันจะใช้ได้กับมุมมองแบบกำหนดเองของฉันเช่นกัน   -  person max    schedule 21.07.2016


คำตอบ (1)


setShadowLayer จริงๆ แล้วมีไว้สำหรับใส่เงาให้กับข้อความ

หากคุณรู้บิตแมปที่คุณต้องการวาดอยู่แล้ว คุณสามารถเพิ่มเงาใน PhotoShop แล้ววาดบิตแมปและเงาทั้งหมดพร้อมกันได้

หากคุณไม่ต้องการทำเช่นนั้น คุณสามารถสร้างเงาได้โดยการทำสำเนารูปภาพ ใช้ตัวกรอง PorterDuff เพื่อให้เป็นสีเทาทั้งหมด ใช้ Renderscript เพื่อเบลอภาพ และวาดลงบนผืนผ้าใบโดยมีค่าออฟเซ็ต x,y ก่อนที่จะวาดภาพจริงไว้ด้านบน

โดยส่วนตัวแล้วฉันคิดว่า PhotoShop ง่ายกว่ามาก

person kris larson    schedule 21.07.2016