16,228
社区成员
发帖
与我相关
我的任务
分享
void CImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
if (m_loadImage == true)
{
m_loadImage = false;
m_imagePixmapBack.load(m_imagePath);
m_imagePixmap = m_imagePixmapBack;
QSize imageUpSize = imageZoom(
QSize(m_nImageSize, m_nImageSize),
QSize(m_imagePixmap.width(), m_imagePixmap.height()));
m_imagePixmap = m_imagePixmap.scaled(imageUpSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
if (option->state & QStyle::State_Selected)
{
setBackgroundFrameColor(painter, m_mouseClickedBackground, m_mouseClickedFrame);
}
else if (m_startShow == mouseEnter)
{
setBackgroundFrameColor(painter, m_mouseEnterBackground, m_mouseEnterFrame);
}
//计算将图片显示居中。 高度-13,给底部留一些空间显示文字
int sh = m_frameSize.height() - 20 - m_imagePixmap.height();
int sw = (m_frameSize.width() == m_imagePixmap.width()) ? 0 : m_frameSize.width() / 2 - m_imagePixmap.width() / 2;
painter->drawPixmap(sw, sh, m_imagePixmap);
painter->drawText(QRect(0, 0, m_frameSize.width(), m_frameSize.height() - 5), Qt::AlignCenter | Qt::AlignBottom, m_text);
}