簡體   English   中英

Qt (QML) 虛線圓圈

[英]Qt (QML) Dashed Circle

有沒有辦法在 QML 中繪制半虛線圓圈? 我是這樣畫半圓的

   var Circle = getContext("2d");
          Circle.save();
          var CircleGradient = 
 Circle.createLinearGradient(parent.width/4,parent.height,parent.width/4,0);
        CircleGradient.addColorStop(0, firstGradientPoint);
                  CircleGradient.addColorStop(1, secondGradientPoint);
                  Circle.clearRect(0, 0, parent.width, parent.height);
                  Circle.beginPath();
                  Circle.lineCap = "round";
                  Circle.lineWidth = 10;
                  Circle.strokeStyle = CircleGradient
                  Circle.arc(parent.width/2, parent.height/2, canvas.radius - (Circle.lineWidth / 2), Math.PI/2, canvas.Value);
                  Circle.stroke();
                  Circle.restore();

結果

但我怎樣才能讓它像這樣破滅。

我需要

我對 QML 有一點了解,但從未編碼過。 但是你可以通過邏輯來解決你的問題。

這是邏輯 - 下面的代碼是偽代碼,不起作用,但會給你一個想法。

在循環中繪制小圓弧,中間有空格。

//DECLARE YOUR ANGLES START AND END
startAngle = 0.0;
endAngle = pi/20;// 10 ARCS AND 10 SPACES

 while (q++ < 10){

   Circle.arc(parent.width/2, parent.height/2, canvas.radius - (Circle.lineWidth / 2), startAngle, endAngle, canvas.Value)

   //LEAVE SPACE AND CREATE NEW START AND END ANGLE.
   startAngle = endAngle + endAngle;
   endAngle  = startAngle + endAngle;
 }

我知道這個問題已經過時了,但它可能對某人有所幫助。 您可以使用Qt Quick Shapes (自 Qt 5.10 起)來渲染您想要的內容。 這不是復制粘貼代碼,而是更多的方法:

Shape {
    ShapePath {
        id: shapePath
        strokeColor: "black"
        strokeStyle: ShapePath.DashLine
        dashPattern: [6, 8]
        fillColor: "transparent"

        PathArc {
            x: 0
            y: radiusX + radiusY
            radiusX: 100
            radiusY: 100
            useLargeArc: true
        }
    }
}

PathArc文檔幾乎包含您需要的一切。 這里有一些更多的形狀示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM