Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






QConicalGradient






Конические градиенты интерполируют цвета против часовой стрелки вокруг центральной точки.

Цвета в градиенте определяется с помощью стоп-точки типа QGradientStop, т.е. положение и цвет. Используйте QGradient:: setColorAt() или QGradient:: setStops() для определения фиксированных точек. В дополнение к функциям, унаследованных от QGradient, класс QConicalGradient обеспечивает угол – angle () и центр - center (), эти функции, возвращающие угол начала и центр градиента.

Отмечу, что функция setSpread () не оказывает никакого влияния на конических градиентов. Причина в том, что конический градиент закрыт по определению, т.е. конический градиент заполняет всю окружность от 0 – 360 градусов, в то время как граница радиального или линейного градиента могут быть указаны через их радиусы либо конечные точки останова, соответственно.

Пришло время показать как это работает на простом примере. я создал проект и разместил на форме 3 элемента label, для того что б четко определить границы вывода каждого градиента. Выглядит это так

Внимание!! – На элементах label установлено свойство autoFillBackgound, если его не убрать после размещения компонентов, то Gradient будет закрыт элементом Label.

Переходим к коду (*.h):

 

  #ifndef DIALOG_H #define DIALOG_H   #include < QDialog> #include < QtCore> #include < QtGui>   // Библиотеку градиентов #include < QLinearGradient> #include < QRadialGradient> #include < QConicalGradient>   namespace Ui { class Dialog; }   class Dialog: public QDialog { Q_OBJECT   public: explicit Dialog(QWidget *parent = 0); ~Dialog();   private: Ui:: Dialog *ui;   // стандартное объявление protected: void paintEvent(QPaintEvent *e); };   #endif // DIALOG_H

Исходник (*.cpp)

 

  #include " dialog.h" #include " ui_dialog.h"   Dialog:: Dialog(QWidget *parent): QDialog(parent), ui(new Ui:: Dialog) { ui-> setupUi(this); }   Dialog:: ~Dialog() { delete ui; }   void Dialog:: paintEvent(QPaintEvent *e) { QPainter pain(this);   // располагаем наши градиенты по координатам label's QLinearGradient lGrad(25, 100, 150, 150); QRadialGradient rGrad(QPoint(324, 140), 100); QConicalGradient cGrad(QPoint(536, 140), 100);   // цвет зададим рандомно, для каждого градиента lGrad.setColorAt(0.0, QColor(qrand() % 255, qrand() % 255, qrand() % 255)); lGrad.setColorAt(0.5, QColor(qrand() % 255, qrand() % 255, qrand() % 255)); lGrad.setColorAt(1.0, QColor(qrand() % 255, qrand() % 255, qrand() % 255));   rGrad.setColorAt(0.0, QColor(qrand() % 255, qrand() % 255, qrand() % 255)); rGrad.setColorAt(0.5, QColor(qrand() % 255, qrand() % 255, qrand() % 255)); rGrad.setColorAt(1.0, QColor(qrand() % 255, qrand() % 255, qrand() % 255));   cGrad.setColorAt(0.0, QColor(qrand() % 255, qrand() % 255, qrand() % 255)); cGrad.setColorAt(0.5, QColor(qrand() % 255, qrand() % 255, qrand() % 255)); cGrad.setColorAt(1.0, QColor(qrand() % 255, qrand() % 255, qrand() % 255));   // выбелим участки под каждый градиент и отразим его QRect lRec(10, 40, 200, 200); pain.fillRect(lRec, lGrad);   QRect rRec(224, 40, 200, 200); pain.fillRect(rRec, rGrad);   QRect cRec(436, 40, 200, 200); pain.fillRect(cRec, cGrad); }

В итоге получится так:

Попробуйте изменить размеры формы и обратите внимание на то как изменяется цветовая гамма.

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.