roundedrect.qml Example File
canvas/roundedrect/roundedrect.qml
import QtQuick 2.0
import "../contents"
import "../../shared"
Item {
id:container
width: 320
height: 480
Column {
spacing: 6
anchors.fill: parent
anchors.topMargin: 12
Text {
font.pointSize: 24
font.bold: true
text: "Rounded rectangle"
anchors.horizontalCenter: parent.horizontalCenter
color: "#777"
}
Canvas {
id: canvas
width: 320
height: 280
antialiasing: true
property int radius: rCtrl.value
property int rectx: 60
property int recty: 60
property int rectWidth: width - 2*rectx
property int rectHeight: height - 2*recty
property color strokeStyle: Qt.darker(fillStyle, 1.4)
property color fillStyle: "#ae32a0"
property int lineWidth: lineWidthCtrl.value
property bool fill: true
property bool stroke: true
property real alpha: 1.0
onLineWidthChanged:requestPaint();
onFillChanged:requestPaint();
onStrokeChanged:requestPaint();
onRadiusChanged:requestPaint();
onPaint: {
var ctx = getContext("2d");
ctx.save();
ctx.clearRect(0,0,canvas.width, canvas.height);
ctx.strokeStyle = canvas.strokeStyle;
ctx.lineWidth = canvas.lineWidth
ctx.fillStyle = canvas.fillStyle
ctx.globalAlpha = canvas.alpha
ctx.beginPath();
ctx.moveTo(rectx+radius,recty);
ctx.lineTo(rectx+rectWidth-radius,recty);
ctx.arcTo(rectx+rectWidth,recty,rectx+rectWidth,recty+radius,radius);
ctx.lineTo(rectx+rectWidth,recty+rectHeight-radius);
ctx.arcTo(rectx+rectWidth,recty+rectHeight,rectx+rectWidth-radius,recty+rectHeight,radius);
ctx.lineTo(rectx+radius,recty+rectHeight);
ctx.arcTo(rectx,recty+rectHeight,rectx,recty+rectHeight-radius,radius);
ctx.lineTo(rectx,recty+radius);
ctx.arcTo(rectx,recty,rectx+radius,recty,radius);
ctx.closePath();
if (canvas.fill)
ctx.fill();
if (canvas.stroke)
ctx.stroke();
ctx.restore();
}
}
}
Column {
anchors.bottom: parent.bottom
anchors.bottomMargin: 12
Slider {id: lineWidthCtrl ; min: 1 ; max: 10; init: 2 ; name: "Outline"}
Slider {id: rCtrl ; min: 10 ; max: 80 ; init: 40 ; name: "Radius"}
}
}