Линия рисования холста Android - сделайте линию толще

Кажется, это должно быть несколько тривиально, однако в моем приложении для Android я использую холст для рисования ряда линий, которые соединены вместе. По какой-то причине мои линии очень слабые и тонкие. Мне было интересно, как я могу сделать свои линии толще? Вот мой код..

for(int i=1; i<myArrayListOfValues.size(); i++){

        Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        myPaint.setStrokeWidth(8/*1 /getResources().getDisplayMetrics().density*/);
        myPaint.setColor(0xffff0000);   //color.RED

        canvas.drawLine(myArrayListOfValues.get(i), myArrayListOfValues.get(i), myArrayListOfValues.get(i-1), myArrayListOfValues.get(i-1), myPaint);       

    }

Другое дело... мои линии и круги, которые я рисую, ВСЕГДА черные... setColor() никогда не имеет никакого эффекта. Я пытался использовать названия цветов (например, color.red) и даже их шестнадцатеричные значения (например, 0xffff0000).


person user859348    schedule 25.07.2011    source источник
comment
Можете ли вы опубликовать еще немного кода из этого класса, например весь onDraw? или класс, если он достаточно мал. Выглядит нормально, как есть. Почему вы создали объект Paint внутри цикла? все ваши итерации используют один и тот же «myPaint», поэтому лучше создать его один раз вне цикла.   -  person Shaunak    schedule 26.07.2011
comment
Я переместил его за пределы цикла сейчас. Это весь мой код внутри метода onDraw. Я просто хочу знать, как можно сделать линии толще. Линии отображаются, но они слишком тонкие   -  person user859348    schedule 26.07.2011
comment
Попробуйте удалить флаг anti_alias и вместо этого попробуйте использовать 8.0.   -  person Shaunak    schedule 26.07.2011


Ответы (3)


Попробуйте включить эту строку сразу после того, как вы объявите «mypaint»

 mypaint.setStyle(Paint.Style.STROKE); 
person Shaunak    schedule 25.07.2011
comment
как сделать его тонким? - person AndroidCrazy; 06.12.2013
comment
это растягивание :P - person Shaunak; 10.12.2013
comment
это не сработало для меня. В JavaDoc это дается так: ПРИМЕЧАНИЕ: поскольку линия всегда находится в рамке, стиль игнорируется при отрисовке. - person Burhan ARAS; 06.07.2014

Изменить значение

myPaint.setStrokeWidth(8);

к большему целому, например:

myPaint.setStrokeWidth(50);

это сделает линию толще

см. также Paint.setStrokeWidth(float)

person Luis    schedule 07.12.2015
comment
на самом деле это сработало вместо отмеченного правильного ответа - person cherry-wave; 04.08.2016
comment
это должен быть ответ вместо этого! - person Haikal Nashuha; 17.04.2017

Что произойдет, если вы удалите ANTI_ALIAS_FLAG? Кроме того, вы должны переместить конструктор Paint за пределы цикла for, чтобы он не создавался заново на каждой итерации.

person Will Kru    schedule 25.07.2011
comment
справедливое замечание о создании экземпляра краски. ANTI_ALIAS_FLAG находится там, потому что я читал здесь, что он может помочь отобразить строку stackoverflow.com/questions/5377052/ - person user859348; 26.07.2011
comment
ANTI_ALIAS_FLAG просто сгладит линию, если вы пытаетесь нарисовать кривые или наклонные линии. - person Shaunak; 26.07.2011