0

Я использовал холст, чтобы нарисовать на нем несколько текстур. эти текстуры являются прямоугольниками, и теперь я хочу использовать эти текстуры с частями их невидимых, поэтому я мог рисовать фоновые цвета позади текстур, чтобы иметь те же текстуры с разными цветами, не добавляя одну и ту же картину с разными цветами. Я пытался добавить прямоугольники, как это:Android нарисовать несколько Rect как цвет фона

for(Coordinate c : ch.getVisibleCoords()) { 
    ShapeDrawable sD = new ShapeDrawable(); 
    Rect r = new Rect(c.getxS(), 
         c.getyS(), 
         (sh.getScreenWidth()-c.getxS()-sh.getTSize()), 
         (sh.getScreenHeight()-c.getyS()-sh.getTSize())); 
    sD.setBounds(r); 
    textureColorRects.add(sD); 
} 

каждая координата представляет собой структуру хз и YS значениями являются позициями на экране, например координату 1 | 1 может иметь Xs = 0 | yS = 0 и 2 | 1 xS = 48 (48 = texturesize) | YS = 0. Я пробовал это с помощью ShapeDrawable и Rectangles, в первом случае он будет рисовать все одинаковые цвета из одной y-линии, а в другом случае он будет рисовать только какое-то плохое дерьмо. Есть ли другой способ сделать это, или я не понял, как настроить эти прямоугольники, я не могу понять, как это осталось, сверху, справа, внизу работает. Остальная часть кода здесь для вас, чтобы вы могли видеть, как я рисовать ShapeDrawables:

int i = 0; 
for(Coordinate c : ch.getVisibleCoords()) { 
    ShapeDrawable sD = textureColorRects.get(i); 
    Paint color = new Paint(); 
    color.setColor(c.getLandscape().getType().getColor()); 
    color.setStyle(Paint.Style.FILL); 
    sD.getPaint().set(color); 
    sD.draw(canvas); 
} 

textureColorRects представляет собой список, содержащий все ShapeDrawables.

спасибо, что прочитал.

ответ

0

Я нашел решение, это проблема, с которой другие люди тоже (было просто трудно найти), немного сложно понять, как работают Rect значения для левого, верхнего, правого и нижнего, как в начале, так и в редакции например, я хочу прямоугольник размером 16 * 16 и в точке x = 5 | y = 18 на экране, поэтому мне нужно установить правильное значение x + size (5 + 16), а нижнее - y + размер (18 + 16). Верхние и нижние могут быть установлены на левый верхний край прямоугольника (начальное положение).