2015-07-04 2 views
0

Привет, спасибо, здесь я хочу сделать шестиугольник изображения или пятиугольник. Я рассматриваю этот учебник, но я не могу изменять точки. Таким образом, любое изменение требуется для вращения шестиугольника 90 градусов или любым другим способом. Я использовал следующий код для шестиугольника, но этот код дает мне шестиугольник, но я хочу тот же выход с вращением на 90 градусов.Как сделать шестиугольный тип imageview

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(),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(75, 0); 
     Point point2_draw = new Point(0, 50); 
     Point point3_draw = new Point(0, 100); 
     Point point4_draw = new Point(75, 150); 
     Point point5_draw = new Point(150, 100); 
     Point point6_draw = new Point(150, 50); 

     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(point4_draw.x, point4_draw.y); 
     path.lineTo(point5_draw.x, point5_draw.y); 
     path.lineTo(point6_draw.x, point6_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; 
} 

ответ

0

Вы можете повернуть холст на 90 градусов перед рисованием и восстановить его после рисования.

canvas.save(Canvas.MATRIX_SAVE_FLAG); 
canvas.rotate(90);//or -90 
//Do drawing here 
//canvas.drawPath(...) 
canvas.restore(); 
+0

спасибо, но этот код не работает, а не вращает холст. –

+0

Вот полный пример, используя тот же подход: http://android-er.blogspot.hk/2014/06/draw-rotated-path-by-rotating-canvas.html –

+0

спасибо, этот пример очень полезен. ... –

0

Используйте эту библиотека: - https://github.com/MostafaGazar/CustomShapeImageView

Надеется, что это помогает. :)

+0

Благодарим за ответ, возможно ли это без каких-либо lib? –

+0

Да, но это легко, если вы используете библиотеку. :) – Biswajit

+0

также ознакомьтесь с этим lib https://github.com/AlbertGrobas/PolygonImageView – Lester

0

canvas.save();

canvas.rotate (90, 90, 90);

// draw холст
canvas.drawPath (путь, краска);

canvas.restore();

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