Полупрозрачный рисунок.



  • Рисую картинку, полигоны, линии, картинки из файлов с применением масок,… Нужно всё это нарисованное наставить на виджет с полупрозрачностью. Делаю вариант с рисованием с начало в QPixmap с последующим отображением в виджет. С полигонами, линиями понятно, цвет ставлю с соответствующим альфа каналом. А с картинкой ни чего не получается. Пробовал после рисования в QPixmap ставить туда маску с альфа каналом, но всё равно ни чего не получается.
    Дайте пожалуйста пример кода полупрозрачная картинка с изменяемой степенью прозрачности.



  • Покажите, пожалуйста, код, где вы делаете полупрозрачный рисунок.



  • Фон полупрозрачный, а картинка нет.
    Сделал простенький проект, но куда архив с ним прицепить не вижу, даю основной код.

    @#include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QBitmap>

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    Transparency = 120;
    PixmapMem = NULL;
    PixmapFon = new QPixmap(QString("images/p.png"));
    
    PixmapPic = new QPixmap(QString("images/folder.png"));
    QBitmap BM = PixmapPic->createMaskFromColor(QColor(255,255,255));
    PixmapPic->setMask(BM);
    Rc.setRect(20,20,200,200);
    Rc1.setRect(70,70,120,120);
    

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }

    void MainWindow::resizeEvent(QResizeEvent *)
    {
    if (PixmapMem != NULL)
    delete PixmapMem;
    PixmapMem = new QPixmap(size());

    }

    void MainWindow::paintEvent(QPaintEvent *)
    {
    QPainter painter(this);

    painter.drawPixmap(rect(),*PixmapFon);
    
    QBitmap BM_Mask(PixmapMem->size());
    BM_Mask.fill(QColor(255,255,255,Transparency));
    PixmapMem->setMask(BM_Mask);
    
    QPainter painterMem(PixmapMem);
    
    painterMem.setBrush(QBrush(QColor(200,150,170,Transparency)));
    painterMem.setPen(Qt::NoPen);
    painterMem.drawRect(Rc);
    painterMem.drawPixmap(Rc1,*PixmapPic);
    
    painter.drawPixmap(Rc,*PixmapMem);
    

    }
    @



  • Сделал, но, по моему криво. Рисую на QImage, прохожу в этом объекте по пикселям и меняю в них альфа канал, копирую на экран.



  • К сожалению без .h файла я не могу скомпилировать ваш пример.

    Посмотрите пример "Image Composition Example":http://qt-project.org/doc/qt-5/qtwidgets-painting-imagecomposition-example.html

    попробуйте свои картинки p.png и folder.png подставить в этот пример.



  • вот ещё пример нашел в закромах "Transparent QImage or QPixmap picture ":http://qtdevnotes.blogspot.com/2010/04/transparent-qimage-or-qpixmap-picture.html


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.