m
July 12, 2017, 12:05 a.m.

QML Canvas + Line. Bug?

Пришлось порисовать, использовал для этого канвас.  И оказалось, что он как-то глючно работает.
Во-первых, появляются артефакты при большом количестве отрисовываемых элементов (алгоритм был очень неоптимизированный, исправил, потому пример дать не могу),
Во-вторых, такой артефакт стабильно держится: если для отрисовываемой линии lineWidth выставлен больше одного, а следующая линия расположена под небольшим углом к прошлой линии, то появляется продолжение линии. Вот небольшой код, на котором у меня это повторяется. Qt 5.9.0 GCC 64bit, Linux Debian
 
    Canvas {
        id: myCanvas
        anchors.fill: parent

        onPaint: {
            var ctx = getContext('2d')

            ctx.lineWidth = 3
            ctx.strokeStyle = "#37474f"
            ctx.beginPath()
            ctx.moveTo(130.5, 38);
            ctx.lineTo(130.5, 150);
            ctx.lineTo(126, 85);
            ctx.stroke()
        }
    }
 
На скриншоте видно разницу с HTML версией canvas, как это должно выглядеть.

Screenshot_20170711_204635.png
2

Do you like it? Share on social networks!

2
Evgenii Legotckoi
  • July 12, 2017, 2:30 a.m.
  • The answer was marked as a solution.

В QML у Context2D в Canvas есть свойство miterLimit, выставьте его на 1 или даже на 0.1 тогда будет выглядеть так, как вы хотите.

    Canvas {
          id: myCanvas
          anchors.fill: parent


          onPaint: {
              var ctx = getContext('2d')

              ctx.lineWidth = 3
              ctx.miterLimit = 0.1  // Вот эта настройка
              ctx.strokeStyle = "#37474f"
              ctx.beginPath()
              ctx.moveTo(130.5, 38);
              ctx.lineTo(130.5, 150);
              ctx.lineTo(126, 85);
              ctx.stroke()
          }
      }
    m
    • July 12, 2017, 3:28 a.m.

    Вот оно что, значит не баг) Спасибо

      Comments

      Only authorized users can post comments.
      Please, Log in or Sign up
      • Last comments
      • AK
        April 1, 2025, 11:41 a.m.
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        March 9, 2025, 9:02 p.m.
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        March 9, 2025, 4:14 p.m.
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
      • ИМ
        Nov. 22, 2024, 9:51 p.m.
        Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      • Evgenii Legotckoi
        Oct. 31, 2024, 11:37 p.m.
        Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup