повторить изображение плитки с путями в Android - PullRequest
0 голосов
/ 27 июня 2018

Я хочу создать фрейм Как это изображение, используя путь Я хочу использовать растровое изображение с мозаичным изображением только по горизонтали, есть ли способ сделать это, чтобы оно расширялось только на X, как повторение x на CSS. Я использовал следующий код, но растровое изображение горизонтальное и вертикальное. Сначала я создал четыре объекта рисования для drawPath (). Затем я создал четыре объекта пути, чтобы нарисовать прямоугольную рамку, и я хочу повторить изображение с путем.

Paint wallpaint = new Paint();
Shader mShader1 = new BitmapShader(rotated_bitmap_180, 
                                 Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
wallpaint.setShader(mShader1);

Paint wallpaint1 = new Paint();
mShader1 = new BitmapShader(rotated_bitmap_bottom, 
                                     Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
wallpaint1.setShader(mShader1);


Paint wallpaint3 = new Paint();
mShader1 = new BitmapShader(rotated_bitmap_90, Shader.TileMode.REPEAT, 
                                        Shader.TileMode.REPEAT);
wallpaint3.setShader(mShader1);
wallpaint3.setStrokeWidth((int) frameWidth);


Paint wallpaint2 = new Paint();
mShader1 = new BitmapShader(rotated_bitmap_270, Shader.TileMode.REPEAT, 
                                          Shader.TileMode.REPEAT);
wallpaint2.setShader(mShader1);


Path wallpath1 = new Path();
wallpath1.moveTo(0, 0);
wallpath1.lineTo((float) frame_area_width, 0); // used for first point
wallpath1.lineTo((float) (frame_area_width - (frameWidth * ppi)), (float) 
                                     (frameWidth * ppi));
wallpath1.lineTo((float) (frameWidth * ppi), (float) (frameWidth*ppi));
wallpath1.close();

Path wallpath2 = new Path();
wallpath2.moveTo(0, (float) frame_area_height);
wallpath2.lineTo((float) (frameWidth * ppi), (float) (frame_area_height - 
                              (frameWidth * ppi))); // used for first point
wallpath2.lineTo((float) (frame_area_width - (frameWidth * ppi)), (float) 
                               (frame_area_height - (frameWidth * ppi)));
wallpath2.lineTo((float) frame_area_width, (float) frame_area_height);
wallpath2.close();

Path wallpath3 = new Path();
wallpath3.moveTo(0, 0);
wallpath3.lineTo((float) (frameWidth * ppi), (float) (frameWidth * ppi)); 
wallpath3.lineTo((float) (frameWidth * ppi), (float) (frame_area_height - 
                             (frameWidth * ppi)));
wallpath3.lineTo(0, (float) frame_area_height);
wallpath3.close();

Path wallpath4 = new Path();
wallpath4.moveTo((float) (frame_area_width - (frameWidth * ppi)), (float) 
                                       (frameWidth * ppi));
wallpath4.lineTo((float) frame_area_width, 0); // used for first point
wallpath4.lineTo((float) frame_area_width, (float) frame_area_height);
wallpath4.lineTo((float) (frame_area_width - (frameWidth * ppi)), (float) 
                              (frame_area_height - (frameWidth * ppi)));
wallpath4.close();

canvas.drawPath(wallpath1, wallpaint);
canvas.drawPath(wallpath2, wallpaint1);
canvas.drawPath(wallpath3, wallpaint2);
canvas.drawPath(wallpath4, wallpaint3);
...