Ich möchte die visuelle Farbe an einer willkürlichen Position innerhalb des 0.0 -
Code: Select all
1.0
Beachten Sie, dass ich keinen C ++ - Code schreiben kann. Daher werde ich Python -basierten Code für die folgenden Beispiele bereitstellen. C ++ basierende Antworten werden jedoch auch gut empfangen.
Code: Select all
def gradientColorAt(grad, pos):
if pos = 1:
return grad.stops()[-1][1]
ani = QVariantAnimation()
ani.setDuration(1000)
startDone = False
for stop, color in grad.stops():
if not startDone:
startDone = True
ani.setStartValue(color)
if not stop:
continue
ani.setKeyValueAt(stop, color)
if stop < 1:
ani.setEndValue(color)
ani.setCurrentTime(round(1000 * pos))
return ani.currentValue()
Code: Select all
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
app = QApplication([])
win = QWidget()
lay = QVBoxLayout(win)
grad = QLinearGradient(0, 0, 1, 0)
grad.setCoordinateMode(grad.ObjectBoundingMode)
grad.setColorAt(1, Qt.green)
transBlack = QColor(Qt.transparent)
transRed = QColor(255, 0, 0, 0)
pal = app.palette()
for color in (transBlack, transRed):
grad.setColorAt(0, color)
pal.setBrush(QPalette.Window, QBrush(grad))
widget = QWidget()
widget.setAutoFillBackground(True)
widget.setPalette(pal)
lay.addWidget(widget)
win.resize(400, 400)
win.show()
app.exec()

The question
Während der letzte Versuch wie erwartet funktioniert, gefällt es mir aus den folgenden Gründen nicht wirklich: < /p>
[*] Soweit ich verstehen kann, erstellt QT bereits einen internen "Farbtabellen" -Cache, und obwohl es offensichtlich nicht extern zugegriffen werden kann, scheinen die Farbwerte zu erstellen, die nicht sehr effizient sind. vermutete basierend auf den Pixeldaten von Qimage;
Aufgrund all der oben genannten müsste jede temporäre Berechnung von Zwischenfarben eine Qvariantanimation erstellen. Geben Sie die korrekten Farbwerte an, wie in einem visuell gestrichenen Gradienten von Qt? Es scheint, dass Qgradient/Qbrush es ermöglicht, zwei verschiedene Arten von Interpolationen festzulegen (
Code: Select all
ColorInterpolation