本文整理汇总了C++中QBitmap::isNull方法的典型用法代码示例。如果您正苦于以下问题:C++ QBitmap::isNull方法的具体用法?C++ QBitmap::isNull怎么用?C++ QBitmap::isNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QBitmap
的用法示例。
在下文中一共展示了QBitmap::isNull方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createPixmapCursor
HCURSOR QWindowsCursor::createPixmapCursor(const QPixmap &pixmap, int hotX, int hotY)
{
HCURSOR cur = 0;
QBitmap mask = pixmap.mask();
if (mask.isNull()) {
mask = QBitmap(pixmap.size());
mask.fill(Qt::color1);
}
HBITMAP ic = qt_pixmapToWinHBITMAP(pixmap, /* HBitmapAlpha */ 2);
const HBITMAP im = qt_createIconMask(mask);
ICONINFO ii;
ii.fIcon = 0;
ii.xHotspot = hotX;
ii.yHotspot = hotY;
ii.hbmMask = im;
ii.hbmColor = ic;
cur = CreateIconIndirect(&ii);
DeleteObject(ic);
DeleteObject(im);
return cur;
}
示例2: resize
QPixmap BitmapFactoryInst::resize(int w, int h, const QPixmap& p, Qt::BGMode bgmode) const
{
if (bgmode == Qt::TransparentMode) {
if (p.width() == 0 || p.height() == 0)
w = 1;
QPixmap pix = p;
int x = pix.width () > w ? 0 : (w - pix.width ())/2;
int y = pix.height() > h ? 0 : (h - pix.height())/2;
if (x == 0 && y == 0)
return pix;
QPixmap pm (w,h);
QBitmap mask (w,h);
mask.fill(Qt::color0);
QBitmap bm = pix.mask();
if (!bm.isNull())
{
QPainter painter(&mask);
painter.drawPixmap(QPoint(x, y), bm, QRect(0, 0, pix.width(), pix.height()));
pm.setMask(mask);
}
else
{
pm.setMask(mask);
pm = fillRect(x, y, pix.width(), pix.height(), pm, Qt::OpaqueMode);
}
QPainter pt;
pt.begin( &pm );
pt.drawPixmap(x, y, pix);
pt.end();
return pm;
} else { // Qt::OpaqueMode
QPixmap pix = p;
if (pix.width() == 0 || pix.height() == 0)
return pix; // do not resize a null pixmap
QPalette pal = qApp->palette();
QColor dl = pal.color(QPalette::Disabled, QPalette::Light);
QColor dt = pal.color(QPalette::Disabled, QPalette::Text);
QPixmap pm = pix;
pm = QPixmap(w,h);
pm.fill(dl);
QPainter pt;
pt.begin( &pm );
pt.setPen( dl );
pt.drawPixmap(1, 1, pix);
pt.setPen( dt );
pt.drawPixmap(0, 0, pix);
pt.end();
return pm;
}
}
示例3:
QRegion::QRegion( const QBitmap & bm )
{
data = new QRegionData;
Q_CHECK_PTR( data );
data->hgt = 0;
data->is_null = FALSE;
if ( bm.isNull() )
data->rgn = 0;
else
data->rgn = qt_pm_bitmapToRegion( bm );
}
示例4: createCursors
void GLWidget::createCursors()
{
QBitmap pic = QBitmap(":/zoomIn.png");
if(pic.isNull())
{
ui.print("Warning: Null pic");
}
QBitmap mask = QBitmap(":/zoomIn-mask.png");
if(mask.isNull())
{
ui.print("Warning: Null mask");
}
zoomInCursor = QCursor( pic, mask);
QBitmap pic2 = QBitmap(":/zoomOut.png");
if(pic2.isNull())
{
ui.print("Warning: Null pic2");
}
zoomOutCursor = QCursor( pic2, mask);
}
示例5: setPixmap
void QShapedPixmapWindow::setPixmap(const QPixmap &pixmap)
{
m_pixmap = pixmap;
if (!m_useCompositing) {
const QBitmap mask = m_pixmap.mask();
if (!mask.isNull()) {
if (!handle())
create();
setMask(mask);
}
}
}
示例6: setMask
void QPixmap::setMask( const QBitmap &newmask )
{
const QPixmap *tmp = &newmask; // dec cxx bug
if ( (data == tmp->data) ||
( newmask.handle() && newmask.handle() == handle() ) ) {
QPixmap m = tmp->copy( TRUE );
setMask( *((QBitmap*)&m) );
data->selfmask = TRUE; // mask == pixmap
return;
}
if ( newmask.isNull() ) { // reset the mask
if (data->mask) {
detach();
data->selfmask = FALSE;
delete data->mask;
data->mask = 0;
}
return;
}
detach();
data->selfmask = FALSE;
if ( newmask.width() != width() || newmask.height() != height() ) {
#if defined(QT_CHECK_RANGE)
qWarning( "QPixmap::setMask: The pixmap and the mask must have "
"the same size" );
#endif
return;
}
#if defined(Q_WS_MAC) || (defined(Q_WS_X11) && !defined(QT_NO_XFTFREETYPE))
// when setting the mask, we get rid of the alpha channel completely
delete data->alphapm;
data->alphapm = 0;
#endif // Q_WS_X11 && !QT_NO_XFTFREETYPE
delete data->mask;
QBitmap* newmaskcopy;
if ( newmask.mask() )
newmaskcopy = (QBitmap*)new QPixmap( tmp->copy( TRUE ) );
else
newmaskcopy = new QBitmap( newmask );
#ifdef Q_WS_X11
newmaskcopy->x11SetScreen( x11Screen() );
#endif
data->mask = newmaskcopy;
}
示例7: fillRect
QPixmap BitmapFactoryInst::fillRect(int x, int y, int w, int h, const QPixmap& p, Qt::BGMode bgmode) const
{
QBitmap b = p.mask();
if (b.isNull())
return p; // sorry, but cannot do anything
QPixmap pix = p;
// modify the mask
QPainter pt;
pt.begin(&b);
if (bgmode == Qt::OpaqueMode)
pt.fillRect(x, y, w, h, Qt::color1); // make opaque
else // Qt::TransparentMode
pt.fillRect(x, y, w, h, Qt::color0); // make transparent
pt.end();
pix.setMask(b);
return pix;
}
示例8: toWinHICON
HICON QPixmap::toWinHICON() const
{
QBitmap maskBitmap = mask();
if (maskBitmap.isNull()) {
maskBitmap= QBitmap(size());
maskBitmap.fill(Qt::color1);
}
ICONINFO ii;
ii.fIcon = true;
ii.hbmMask = qt_createIconMask(maskBitmap);
ii.hbmColor = toWinHBITMAP(QPixmap::Alpha);
ii.xHotspot = 0;
ii.yHotspot = 0;
HICON hIcon = CreateIconIndirect(&ii);
DeleteObject(ii.hbmColor);
DeleteObject(ii.hbmMask);
return hIcon;
}
示例9: QBitmap
static HCURSOR create32BitCursor(const QPixmap &pixmap, int hx, int hy)
{
HCURSOR cur = 0;
#if !defined(Q_WS_WINCE)
QBitmap mask = pixmap.mask();
if (mask.isNull()) {
mask = QBitmap(pixmap.size());
mask.fill(Qt::color1);
}
HBITMAP ic = pixmap.toWinHBITMAP(QPixmap::Alpha);
HBITMAP im = qt_createIconMask(mask);
ICONINFO ii;
ii.fIcon = 0;
ii.xHotspot = hx;
ii.yHotspot = hy;
ii.hbmMask = im;
ii.hbmColor = ic;
cur = CreateIconIndirect(&ii);
DeleteObject(ic);
DeleteObject(im);
#elif defined(GWES_ICONCURS)
QImage bbits, mbits;
bool invb, invm;
bbits = pixmap.toImage().convertToFormat(QImage::Format_Mono);
mbits = pixmap.toImage().convertToFormat(QImage::Format_Mono);
invb = bbits.colorCount() > 1 && qGray(bbits.color(0)) < qGray(bbits.color(1));
invm = mbits.colorCount() > 1 && qGray(mbits.color(0)) < qGray(mbits.color(1));
int sysW = GetSystemMetrics(SM_CXCURSOR);
int sysH = GetSystemMetrics(SM_CYCURSOR);
int sysN = qMax(1, sysW / 8);
int n = qMax(1, bbits.width() / 8);
int h = bbits.height();
uchar* xBits = new uchar[sysH * sysN];
uchar* xMask = new uchar[sysH * sysN];
int x = 0;
for (int i = 0; i < sysH; ++i) {
if (i >= h) {
memset(&xBits[x] , 255, sysN);
memset(&xMask[x] , 0, sysN);
x += sysN;
} else {
int fillWidth = n > sysN ? sysN : n;
uchar *bits = bbits.scanLine(i);
uchar *mask = mbits.scanLine(i);
for (int j = 0; j < fillWidth; ++j) {
uchar b = bits[j];
uchar m = mask[j];
if (invb)
b ^= 0xFF;
if (invm)
m ^= 0xFF;
xBits[x] = ~m;
xMask[x] = b ^ m;
++x;
}
for (int j = fillWidth; j < sysN; ++j ) {
xBits[x] = 255;
xMask[x] = 0;
++x;
}
}
}
cur = CreateCursor(qWinAppInst(), hx, hy, sysW, sysH,
xBits, xMask);
#else
Q_UNUSED(pixmap);
Q_UNUSED(hx);
Q_UNUSED(hy);
#endif
return cur;
}
示例10: fill
bool kpFloodFill::fill ()
{
if (m_initState < 2 && !prepare ())
{
kdError () << "kpFloodFill:fill() could not prepare()!" << endl;
return false;
}
// not trying to do a NOP fill
if (m_boundingRect.isValid ())
{
QApplication::setOverrideCursor (Qt::waitCursor);
QPainter painter, maskPainter;
QBitmap maskBitmap;
if (m_pixmapPtr->mask () || m_color.isTransparent ())
{
maskBitmap = kpPixmapFX::getNonNullMask (*m_pixmapPtr);
maskPainter.begin (&maskBitmap);
maskPainter.setPen (m_color.maskColor ());
}
if (m_color.isOpaque ())
{
painter.begin (m_pixmapPtr);
painter.setPen (m_color.toQColor ());
}
const QValueList <FillLine>::ConstIterator fillLinesEnd = m_fillLines.end ();
for (QValueList <FillLine>::ConstIterator it = m_fillLines.begin ();
it != fillLinesEnd;
it++)
{
QPoint p1 = QPoint ((*it).m_x1, (*it).m_y);
QPoint p2 = QPoint ((*it).m_x2, (*it).m_y);
if (painter.isActive ())
painter.drawLine (p1, p2);
if (maskPainter.isActive ())
maskPainter.drawLine (p1, p2);
}
if (painter.isActive ())
painter.end ();
if (maskPainter.isActive ())
maskPainter.end ();
if (!maskBitmap.isNull ())
m_pixmapPtr->setMask (maskBitmap);
QApplication::restoreOverrideCursor ();
}
else
{
#if DEBUG_KP_FLOOD_FILL && 1
kdDebug () << "kpFloodFill::fill() performing NOP fill" << endl;
#endif
}
return true;
}