À l'aide de Qt Pour Dessiner le Graphe de Sin(x)
Je suis en train d'expérimenter des façons de dessiner un sinusoïdale graphique.
Mon widget est seulement en s'attendant à obtenir passé dans un peu arbitraire de points de données. J'ai pour l'adapter à ces points de données pour un sinusoïdale ligne courbe:
Jusqu'à présent, j'ai essayé quelques méthodes à l'aide de QPainterPath.
- QPainterPath::lineTo - j'ai essayé d'utiliser cette fonction pour tracer la courbe, en prenant mes points de données et la création de nombreux points ENTRE eux, que la ligne en réalité adoucit un peu. C'est un peu trop gourmand en ressources mais, je le sens.
- QPainterPath::cubicTo - De ce que j'ai recueillies auprès de RTFM, c'est la meilleure façon d'aller. Le seul problème est que je ne suis pas sûr de la façon de tracer mes points de contrôle dans des endroits où il sera constamment et par programme de lisser la courbe de la façon dont je le veux. J'ai été incapable d'obtenir le résultat souhaité avec cette fonction.
Après quelques recherches sur google, je suis tombé sur quelques posts sur le forum qui ont été à l'aide de Qwt pour la courbe de traçage. Ce serait génial si je pouvais utiliser Qwt, mais ce n'est pas une option, car je suis limité à uniquement à l'aide de Qt.
Quelqu'un aurait-il utile de commentaires/suggestions?
OriginalL'auteur kwikness | 2011-08-03
Vous devez vous connecter pour publier un commentaire.
Je suis en train de faire une chose très semblable actuellement avec la peinture, le bode balayer d'un ÉGALISEUR paramétrique (une longue ligne avec plusieurs courbes larges). La façon dont je suis en train de faire (pseudo style):
La combinaison des appels à
setRenderHint
et tracer des lignes avecQPointF
(c'est à dire deuxqreal
) plutôt que deQPoint
(deuxint
) rend la ligne très lisse.Nous utilisons cette sur un SBC sous Ubuntu et se redessiner les horaires (y compris toutes les mathématiques complexes pour obtenir les points de la première place) de ~80ms pour un 600x300px graphique. Les premiers essais montrent que l'activation de rendu opengl réduit à ~8ms (clairement le processeur tâche intensive est la peinture avec de l'antialiasing), donc si vous pouvez le faire, je pense que cette solution va travailler pour vous.
Salut, je suis en train de faire quelque chose de similaire. dans votre cinquième ligne (en boucle) n'avez-vous pas dire
path
au lieu depainter
?Oui, j'ai fait de dire que. Bravo pour souligné 🙂
OriginalL'auteur sjwarner
QCustomPlot est un logiciel gratuit et facile à utiliser de classe qui peut être trouvé en ligne. Il peut être mieux pour ce que vous cherchez à faire.
OriginalL'auteur Mike