2015-12-25 2 views
0

Я использую следующий код, чтобы нарисовать разные формы изображений (например, алмаз, звезда и т. Д.). но как я могу нарисовать изображение в форме цветка.? любая помощь в абрикосе.!цветочное изображение в андроиде

public static Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) 
{ 

Bitmap finalBitmap; 
if (bitmap.getWidth() != radius || bitmap.getHeight() != radius) 
    finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius, false); 
else 
    finalBitmap = bitmap; 

Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(), 
     finalBitmap.getHeight(), Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(output); 

Paint paint = new Paint(); 
final Rect rect = new Rect(0, 0, finalBitmap.getWidth(), 
     finalBitmap.getHeight()); 

Point point1_draw = new Point(finalBitmap.getWidth()/2, 0); 
Point point2_draw = new Point(0, finalBitmap.getHeight()); 
Point point3_draw = new Point(finalBitmap.getWidth(), finalBitmap.getHeight()); 

Path path = new Path(); 
path.moveTo(point1_draw.x, point1_draw.y); 
path.lineTo(point2_draw.x, point2_draw.y); 
path.lineTo(point3_draw.x, point3_draw.y); 
path.lineTo(point1_draw.x, point1_draw.y); 
path.close(); 
canvas.drawARGB(0, 0, 0, 0); 
paint.setColor(Color.parseColor("#BAB399")); 
canvas.drawPath(path, paint);  
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
canvas.drawBitmap(finalBitmap, rect, rect, paint); 

    return output; 
} 

like this

ответ

0

Я еще не работал с пользовательскими формами, но я нашел пост от StackOverflow, которые могут быть полезны:

Вот моя попытка - с помощью поверните преобразование, закрепленное на центре формы цветка.

enter image description here

import java.awt.*; 
import java.awt.geom.*; 
import java.awt.image.BufferedImage; 
import javax.swing.*; 

public class DaisyDisplay { 

    DaisyDisplay() { 
     BufferedImage daisy = new BufferedImage(
       200,200,BufferedImage.TYPE_INT_RGB); 
     Graphics2D g = daisy.createGraphics(); 
     g.setColor(Color.GREEN.darker()); 
     g.fillRect(0, 0, 200, 200); 
     Daisy daisyPainter = new Daisy(); 
     daisyPainter.paint(g); 
     g.dispose(); 

     JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(daisy))); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new DaisyDisplay(); 
      } 
     }); 
    } 
} 

class Daisy { 

    public void paint(Graphics2D g) { 
     Area daisyArea = getDaisyShape(); 
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 

     paintDaisyPart(g,daisyArea); 
     g.setTransform(AffineTransform.getRotateInstance(
       Math.PI*1/8, 
       100,100)); 
     paintDaisyPart(g,daisyArea); 
     g.setTransform(AffineTransform.getRotateInstance(
       Math.PI*3/8, 
       100,100); 
     paintDaisyPart(g,daisyArea); 
     g.setTransform(AffineTransform.getRotateInstance(
       Math.PI*2/8, 
       100,100)); 
     paintDaisyPart(g,daisyArea); 
    } 

    public void paintDaisyPart(Graphics2D g, Area daisyArea) { 
     g.setClip(daisyArea); 

     g.setColor(Color.YELLOW); 
     g.fillRect(0, 0, 200, 200); 

     g.setColor(Color.YELLOW.darker()); 
     g.setClip(null); 
     g.setStroke(new BasicStroke(3)); 
     g.draw(daisyArea); 
    } 

    public Area getDaisyShape() { 
     Ellipse2D.Double core = new Ellipse2D.Double(70,70,60,60); 

     Area area = new Area(core); 
     int size = 200; 
     int pad = 10; 
     int petalWidth = 50; 
     int petalLength = 75; 

     // left petal 
     area.add(new Area(new Ellipse2D.Double(
       pad,(size-petalWidth)/2,petalLength,petalWidth))); 
     // right petal 
     area.add(new Area(new Ellipse2D.Double(
       (size-petalLength-pad),(size-petalWidth)/2,petalLength,petalWidth))); 
     // top petal 
     area.add(new Area(new Ellipse2D.Double(
       (size-petalWidth)/2,pad,petalWidth,petalLength))); 
     // bottom petal 
     area.add(new Area(new Ellipse2D.Double(
       (size-petalWidth)/2,(size-petalLength-pad),petalWidth,petalLength))); 

     return area; 
    } 
} 

Читать весь разговор: Shapes combination in Java?

Надеется, что это поможет

Смежные вопросы