mirror of
https://github.com/zhuzichu520/FluentUI.git
synced 2025-07-01 15:42:20 +08:00
63 lines
1.8 KiB
QML
63 lines
1.8 KiB
QML
import QtQuick
|
|
|
|
Item {
|
|
id: root
|
|
property color hueColor : "blue"
|
|
property real saturation : pickerCursor.x/(width-2*r)
|
|
property real brightness : 1 - pickerCursor.y/(height-2*r)
|
|
property int r : colorHandleRadius
|
|
|
|
Rectangle {
|
|
x : r
|
|
y : r + parent.height - 2 * r
|
|
rotation: -90
|
|
transformOrigin: Item.TopLeft
|
|
width: parent.height - 2 * r
|
|
height: parent.width - 2 * r
|
|
gradient: Gradient {
|
|
GradientStop { position: 0.0; color: "#FFFFFF" }
|
|
GradientStop { position: 1.0; color: root.hueColor }
|
|
}
|
|
}
|
|
Rectangle {
|
|
x: r
|
|
y: r
|
|
width: parent.width - 2 * r
|
|
height: parent.height - 2 * r
|
|
gradient: Gradient {
|
|
GradientStop { position: 1.0; color: "#FF000000" }
|
|
GradientStop { position: 0.0; color: "#00000000" }
|
|
}
|
|
}
|
|
Item {
|
|
id: pickerCursor
|
|
Rectangle {
|
|
width: r*2; height: r*2
|
|
radius: r
|
|
border.color: "black"; border.width: 2
|
|
color: "transparent"
|
|
Rectangle {
|
|
anchors.fill: parent; anchors.margins: 2;
|
|
border.color: "white"; border.width: 2
|
|
radius: width/2
|
|
color: "transparent"
|
|
}
|
|
}
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
x: r
|
|
y: r
|
|
preventStealing: true
|
|
function handleMouse(mouse) {
|
|
if (mouse.buttons & Qt.LeftButton) {
|
|
pickerCursor.x = Math.max(0,Math.min(mouse.x - r,width-2*r));
|
|
pickerCursor.y = Math.max(0,Math.min(mouse.y - r,height-2*r));
|
|
}
|
|
}
|
|
onPositionChanged:(mouse)=> handleMouse(mouse)
|
|
onPressed:(mouse)=> handleMouse(mouse)
|
|
}
|
|
}
|
|
|