gpt4 book ai didi

c++ - 如何从图像文件创建圆形图标?

转载 作者:行者123 更新时间:2023-11-28 01:01:01 24 4
gpt4 key购买 nike

在我自定义的 QWidget paintEvent 方法中,我想用圆形图像图标绘制一个圆。源图像从文件中加载,然后使用 QPainter 合成自动转换到圆形中。怎么做?谢谢!

void DotGraphView::paintNodes(QPainter & painter)
{
painter.setPen(Qt::blue);
painter.drawEllipse(x, y, 36, 36);
QPixmap icon("./image.png");
QImage fixedImage(64, 64, QImage::Format_ARGB32_Premultiplied);
QPainter imgPainter(&fixedImage);
imgPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
imgPainter.drawPixmap(0, 0, 64, 64, icon);
imgPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);
imgPainter.setBrush(Qt::transparent);
imgPainter.drawEllipse(32, 32, 30, 30);
imgPainter.end();
painter.drawPixmap(x, y, 64, 64, QPixmap::fromImage(fixedImage));
}

上面的代码不起作用。输出显示不是圆形图像。

最佳答案

我不知道我是否理解正确,但这可能会做你想要的:

#include <QtGui/QApplication>
#include <QLabel>
#include <QPixmap>
#include <QBitmap>
#include <QPainter>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

// Load the source image.
QPixmap original(QString("/path/here.jpg"));
if (original.isNull()) {
qFatal("Failed to load.");
return -1;
}

// Draw the mask.
QBitmap mask(original.size());
QPainter painter(&mask);
mask.fill(Qt::white);
painter.setBrush(Qt::black);
painter.drawEllipse(QPoint(mask.width()/2, mask.height()/2), 100, 100);

// Draw the final image.
original.setMask(mask);

// Show the result on the screen.
QLabel label;
label.setPixmap(original);
label.show();

return a.exec();
}

将结果缓存在您的 QWidget 子类中,并在请求时在您的绘画事件中将所需的边界矩形 blit 到屏幕。

关于c++ - 如何从图像文件创建圆形图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com