QBrush

一、画刷样式

一图流:

二、成员函数

1、QBrush(const QGradient &gradient)

用渐变构造画刷。

void Widget::paintEvent(QPaintEvent *event)
{
    auto rect = event->rect();
    QPainter painter(this);
    painter.setBrush(QGradient(QGradient::NewYork));
    painter.drawRect(rect);
}

2、QBrush(const QPixmap &pixmap)

     QBrush(const QImage &image)

用纹理图案构造画刷,画刷风格设为Qt::TexturePattern。

    painter.setBrush(QImage(":/D:/xx.jpeg"));
    painter.drawRect(rect);

3、QBrush(Qt::GlobalColor color, const QPixmap &pixmap)

     QBrush(const QColor &color, const QPixmap &pixmap)

颜色仅对二值图有效(QBitmap继承自QPixmap)。

    painter.setBrush(QBrush(Qt::red,QPixmap(":/D:/qqq.jpeg")));
    painter.drawRect(rect);

    painter.setBrush(QBrush(Qt::red,QBitmap(":/D:/qqq.jpeg")));
    painter.drawRect(rect);

4、QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern)

     QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern)

使用一个颜色和一个画刷样式构造画刷。画刷样式不包括渐变和纹理图案。

    painter.setBrush(QBrush(Qt::red,Qt::HorPattern));
    painter.drawRect(rect);

5、QBrush(Qt::BrushStyle style)

使用画刷样式构造画刷。

6、QBrush()

构造一个默认的黑色画刷,样式是Qt::NoBrush(不填充图形)。

7、void setColor(const QColor &color) / void setColor(Qt::GlobalColor color)

设置画刷颜色。如果样式是渐变类型那不会起作用,如果样式是Qt::TexturePattern但纹理图案不是二值图也不会起作用。

8、const QColor &color()

获取颜色。

9、const QGradient *gradient()

获取画刷的渐变(如果是渐变类型的话)。

10、bool isOpaque()

判断画刷是否透明。如果出现以下情况,则认为画刷不透明:

  • color()的alpha值是255。
  • 它的texture()没有alpha通道,也不是QBitmap。
  • gradient()中的颜色都有一个255的alpha分量。
  • 渐变是辐射渐变类型。

11、void setStyle(Qt::BrushStyle style) / Qt::BrushStyle QBrush::style()

设置/返回画刷样式。

12、void setTexture(const QPixmap &pixmap)

设置画刷纹理图案。样式设置为Qt::TexturePattern。当前的笔刷颜色仅对二值图有效。

13、QPixmap texture()

返回画刷纹理图案,未设置则返回空图像。

14、void setTextureImage(const QImage &image)

用QImage设置画刷纹理图案。样式设置为Qt::TexturePattern。画刷颜色对它不会有影响。

    QBrush brush;
    brush.setColor(Qt::red);
    brush.setTextureImage(QImage(":/D:/qqq.jpeg"));
    painter.setBrush(brush);
    painter.drawRect(rect);

如果要使画刷颜色对QImage设置的纹理图案有影响,可以设置:

    QBrush brush;
    brush.setColor(Qt::red);
    brush.setTexture(QBitmap::fromImage(QImage(":/D:/qqq.jpeg")));
    painter.setBrush(brush);
    painter.drawRect(rect);

15、QImage textureImage()

返回自定义画刷纹理图案,如果未设置自定义画刷纹理图案,则返回空图像。如果纹理图案是用QPixmap设置的,它将被转换为QImage。

16、QTransform transform() const / void setTransform(const QTransform &matrix)

返回 / 设置笔刷的当前变换矩阵。

    QTransform tf;
    tf.scale(0.5,0.5);
    brush.setTransform(tf);

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 给pixmap赋值 pixmap = new QPixmap(900, 600); //设置背景色 pixmap->fill(Qt::white); //根据pixmap创建一个qpaiter painter= new QPainter(pixmap); // 使用 pixmap,也就是把这个控件加到ui里面 ui->pixmap_label->setPixmap(*pixmap); //这里关联信号和槽 connect(ui->linecolor_r_slider,SIGNAL(valueChanged(int)),this,SLOT(linecolor_changed())); connect(ui->linecolor_g_slider,SIGNAL(valueChanged(int)),this,SLOT(linecolor_changed())); connect(ui->linecolor_b_slider,SIGNAL(valueChanged(int)),this,SLOT(linecolor_changed())); connect(ui->fillcolor_comboBox,SIGNAL(currentTextChanged(QString)),this,SLOT(fillcolor_changed())); //这里初始化填充颜色下拉框: ui->fillcolor_comboBox->addItem("黑色"); ui->fillcolor_comboBox->addItem("白色"); ui->fillcolor_comboBox->addItem("红色"); ui->fillcolor_comboBox->addItem("绿色"); ui->fillcolor_comboBox->addItem("蓝色"); ui->fillcolor_comboBox->addItem("黄色"); } MainWindow::~MainWindow() { delete ui; delete pixmap; delete painter; delete linecolor;delete fillcolor; delete circle,rect; } //这个函数是生成按钮被按下时的画图实现: void MainWindow::on_draw_button_clicked() { if (ui->tabWidget->currentIndex()==0)//这个是画圆的部分 { circle =new Circle(new QPoint(ui->circle_x_spinBox->value(),ui->circle_y_spinBox->value()),ui->circle_r_spinBox->value()); circle->draw(painter); } else if (ui->tabWidget->currentIndex()==1){ rect=new Rect(new QPoint(ui->rect_x_spinBox->value(),ui->rect_y_spinBox->value()),ui->rect_a_spinBox->value(),ui->rect_b_spinBox->value()); rect->draw(painter); } ui->pixmap_label->setPixmap(*pixmap); } //这个函数就是设置边线颜色的: void MainWindow::linecolor_changed(){ linecolor=new QColor(ui->linecolor_r_slider->value(),ui->linecolor_g_slider->value(),ui->linecolor_b_slider->value()); painter->setPen(*linecolor); QPalette label_palette; label_palette.setColor(QPalette::Background, *linecolor); ui->linecolor_display_label->setAutoFillBackground(true); ui->linecolor_display_label->setPalette(label_palette); } void MainWindow::fillcolor_changed(){ QString str=ui->fillcolor_comboBox->currentText(); if (str=="黑色"){ fillcolor =new QColor(Qt::black); } else if (str=="蓝色"){ fillcolor =new QColor(Qt::blue); } else if (str=="黄色"){ fillcolor =new QColor(Qt::yellow); } else if (str=="白色"){ fillcolor =new QColor(Qt::white); } else if (str=="绿色"){ fillcolor =new QColor(Qt::green); } else if (str=="红色"){ fillcolor =new QColor(Qt::red); } painter->setBrush(QBrush(*fillcolor)); } //这个函数一不小心搞出来,没用,删了会报错? void MainWindow::on_linecolor_r_slider_actionTriggered(int action) { } //这个函数就是用来保存的功能实现: void MainWindow::on_save_button_clicked() { ofstream out("D://data.txt", ios::out|ios::app); if (ui->tabWidget->currentIndex()==0)//此处保存圆 { out<<"circle"<<endl; out<<Circle::count<<endl; out<center->x()<<" "<center->y()<<" "<r<tabWidget->currentIndex()==1)//此处保存矩形 { out<<"rect"<<endl; out<<Rect::count<<endl; out<northeast->x()<<" "<northeast->y()<<" "<width<<" "<height<<" "<<endl; Rect::count++; } out<red()<<" "<green()<<" "<blue()<<" "<<endl; out<red()<<" "<green()<<" "<blue()<<" "<>str){ if (str=="rect"){ infile>>z>>a>>b>>c>>d; rect = new Rect(new QPoint(a,b),c,d); infile>>a>>b>>c; linecolor=new QColor(a,b,c); painter->setPen(*linecolor); infile>>a>>b>>c; fillcolor=new QColor(a,b,c); painter->setBrush(QBrush(*fillcolor)); rect->draw(painter); } else{ infile>>z>>a>>b>>c; circle=new Circle(new QPoint(a,b),c); infile>>a>>b>>c; linecolor=new QColor(a,b,c); painter->setPen(*linecolor); infile>>a>>b>>c; fillcolor=new QColor(a,b,c); painter->setBrush(QBrush(*fillcolor)); circle->draw(painter); } ui->pixmap_label->setPixmap(*pixmap); } infile.close();} void MainWindow::on_clear_button_clicked() { pixmap->fill(Qt::white); ui->pixmap_label->setPixmap(*pixmap); }
`QBrush` 和 `QPen` 是 PyQt5 中用于设置界面元素填充色和描边色的类。 下面是一个使用 `QBrush` 和 `QPen` 的例子,用于绘制一个矩形和一个椭圆: ```python from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor, QPen, QBrush from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsEllipseItem, QGraphicsRectItem, QGraphicsItem # 创建应用程序对象 app = QApplication([]) # 创建场景对象 scene = QGraphicsScene() # 创建矩形对象 rect_item = QGraphicsRectItem(0, 0, 100, 100) rect_item.setBrush(QBrush(QColor(255, 0, 0))) rect_item.setPen(QPen(QColor(0, 0, 255), 5, Qt.SolidLine, Qt.FlatCap, Qt.MiterJoin)) scene.addItem(rect_item) # 创建椭圆对象 ellipse_item = QGraphicsEllipseItem(100, 100, 100, 50) ellipse_item.setBrush(QBrush(QColor(0, 255, 0))) ellipse_item.setPen(QPen(Qt.NoPen)) scene.addItem(ellipse_item) # 创建视图对象 view = QGraphicsView(scene) view.show() # 运行应用程序 app.exec_() ``` 在上述代码中,我们创建了一个场景对象,然后创建了一个矩形对象和一个椭圆对象,分别使用 `setBrush()` 方法和 `setPen()` 方法设置它们的填充色和描边色。其中,矩形对象的描边颜色为蓝色,线条宽度为 5,线条样式为实线,线条端点为平头,线条连接点为斜接头。椭圆对象没有描边,填充色为绿色。 最后,我们创建了一个视图对象,将场景对象设置为视图的场景,并显示视图。 除了上述例子中的设置填充色和描边色,`QBrush` 和 `QPen` 还可以设置渐变色、图案、线条样式等。在实际的应用中,我们可以根据需要选择合适的属性和方法来设置界面元素的样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值