本文整理汇总了C++中QScreen::pixelFormat方法的典型用法代码示例。如果您正苦于以下问题:C++ QScreen::pixelFormat方法的具体用法?C++ QScreen::pixelFormat怎么用?C++ QScreen::pixelFormat使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QScreen
的用法示例。
在下文中一共展示了QScreen::pixelFormat方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: grabWindow
QPixmap QPixmap::grabWindow(WId window, int x, int y, int w, int h)
{
QWidget *widget = QWidget::find(window);
if (!widget)
return QPixmap();
QRect grabRect = widget->frameGeometry();
if (!widget->isWindow())
grabRect.translate(widget->parentWidget()->mapToGlobal(QPoint()));
if (w < 0)
w = widget->width() - x;
if (h < 0)
h = widget->height() - y;
grabRect &= QRect(x, y, w, h).translated(widget->mapToGlobal(QPoint()));
QScreen *screen = qt_screen;
QDesktopWidget *desktop = QApplication::desktop();
if (!desktop)
return QPixmap();
if (desktop->numScreens() > 1) {
const int screenNo = desktop->screenNumber(widget);
if (screenNo != -1)
screen = qt_screen->subScreens().at(screenNo);
grabRect = grabRect.translated(-screen->region().boundingRect().topLeft());
}
if (screen->pixelFormat() == QImage::Format_Invalid) {
qWarning("QPixmap::grabWindow(): Unable to copy pixels from framebuffer");
return QPixmap();
}
if (screen->isTransformed()) {
const QSize screenSize(screen->width(), screen->height());
grabRect = screen->mapToDevice(grabRect, screenSize);
}
QWSDisplay::grab(false);
QPixmap pixmap;
QImage img(screen->base(),
screen->deviceWidth(), screen->deviceHeight(),
screen->linestep(), screen->pixelFormat());
img = img.copy(grabRect);
QWSDisplay::ungrab();
if (screen->isTransformed()) {
QMatrix matrix;
switch (screen->transformOrientation()) {
case 1: matrix.rotate(90); break;
case 2: matrix.rotate(180); break;
case 3: matrix.rotate(270); break;
default: break;
}
img = img.transformed(matrix);
}
if (screen->pixelType() == QScreen::BGRPixel)
img = img.rgbSwapped();
return QPixmap::fromImage(img);
}
示例2: setPaintDeviceFormat
// Set pixel format and other properties based on a paint device.
void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev)
{
if (!dev)
return;
// Find the QGLScreen for this paint device.
QScreen *screen = screenForDevice(dev);
if (!screen)
return;
int devType = dev->devType();
if (devType == QInternal::Image)
setPixelFormat(static_cast<QImage *>(dev)->format());
else
setPixelFormat(screen->pixelFormat());
}
示例3: if
QImage::Format
QWSMemorySurface::preferredImageFormat(const QWidget *widget) const
{
QScreen *screen = getScreen(widget);
const int depth = screen->depth();
const bool opaque = isWidgetOpaque(widget);
if (!opaque) {
if (depth <= 12)
return QImage::Format_ARGB4444_Premultiplied;
else if (depth <= 15)
return QImage::Format_ARGB8555_Premultiplied;
else if (depth <= 16)
return QImage::Format_ARGB8565_Premultiplied;
else if (depth <= 18)
return QImage::Format_ARGB6666_Premultiplied;
else
return QImage::Format_ARGB32_Premultiplied;
}
QImage::Format format = screen->pixelFormat();
if (format > QImage::Format_Indexed8) // ### assumes all new image formats supports a QPainter
return format;
if (depth <= 12)
return QImage::Format_RGB444;
else if (depth <= 15)
return QImage::Format_RGB555;
else if (depth <= 16)
return QImage::Format_RGB16;
else if (depth <= 18)
return QImage::Format_RGB666;
else if (depth <= 24)
return QImage::Format_RGB888;
else
return QImage::Format_ARGB32_Premultiplied;
}
示例4: set
void QAhiScreenCursor::set(const QImage &image, int hotx, int hoty)
{
if (image.isNull()) {
QScreenCursor::set(image, hotx, hoty);
return;
}
if (image.format() != QImage::Format_MonoLSB) {
set(image.convertToFormat(QImage::Format_MonoLSB), hotx, hoty);
return;
}
AhiPixelFormat_t pixFmt = pixelFormatForImageFormat(image.format());
if (pixFmt >= AhiPixelFormatMax) { // generic fallback
QImage::Format toFormat = screen->pixelFormat();
if (toFormat == QImage::Format_Invalid)
toFormat = QImage::Format_ARGB32;
set(image.convertToFormat(toFormat), hotx, hoty);
return;
}
AhiPoint_t hotSpot = { hotx, hoty };
AhiSize_t bitmapSize = { image.width(), image.height() };
AhiBitmap_t bitmap = { bitmapSize, (void*)(image.bits()),
image.bytesPerLine(), pixFmt
};
AhiSts_t status;
status = AhiDispCursorSet(context, AhiCursor1, &bitmap, &hotSpot,
image.serialNumber(), 0);
if (status != AhiStsOk)
qWarning("QAhiScreenCursor::set(): AhiDispCursorSet failed: %x",
status);
QScreenCursor::set(image, hotx, hoty);
}