Этот код нарисует красный круг, на краях которого будет заметна «лесенка». Почему это происходит? Как избавится от этого артефакта?class CircleView : View { private val paint = Paint().apply { color = Color.RED strokeWidth = 3f } private var radius: Float = 0f constructor(context: Context?) : super(context) constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) override fun onDraw(canvas: Canvas) { canvas.drawCircle((measuredWidth / 2).toFloat(), (measuredHeight / 2).toFloat(), radius, paint) } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) radius = Math.min(measuredWidth, measuredHeight) / 2f } }​

Вопрос школьника по предмету Информатика

Этот код нарисует красный круг, на краях которого будет заметна «лесенка». Почему это происходит? Как избавится от этого артефакта?

class CircleView : View { private val paint = Paint().apply { color = Color.RED strokeWidth = 3f } private var radius: Float = 0f constructor(context: Context?) : super(context) constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) override fun onDraw(canvas: Canvas) { canvas.drawCircle((measuredWidth / 2).toFloat(), (measuredHeight / 2).toFloat(), radius, paint) } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) radius = Math.min(measuredWidth, measuredHeight) / 2f } }

Ответ учителя по предмету Информатика

Ответ:

Если создать шаблон строки с автозаполнением, то можно немного упростить код:

import sys

num_steps = int(sys.argv[1])

fmt_template = ‘{}.{:>%d}’ % num_steps

for x in range(1, num_steps + 1):

   print(fmt_template.format(x, ‘#’ * x))

При num_steps = 4:

1.   #

2.  ##

3. ###

4.####

Объяснение:

Все аргументы функции print, указанные через запятую, выводятся разделенные пробелом, отсюда и нестыковка.

Можно так попробовать:

for x in range(1, c+1):

   print(‘{0}{1}{2}’.format(x, » » * (c — x), ‘#’ * x))

Для c = 3:

1  #

2 ##

3###

Либо заменить запятую конкатенацией (знак +):

print(str(x) + » » * (c — x) + ‘#’ * x)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей