QPaintDevice类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QPaintDevice类参考

QPaintDevice类是所有可以绘制的对象的基类。 详情请见……

#include <qpaintdevice.h>

QPixmapQWidgetQPictureQPrinter继承。

所有成员函数的列表。

公有成员

静态公有成员

保护成员

  • QPaintDevice ( uint devflags )
  • virtual bool cmd ( int, QPainter *, QPDevCmdParam * )

相关函数

  • void bitBlt ( QPaintDevice * dst, int dx, int dy, const QPaintDevice * src, int sx, int sy, int sw, int sh, Qt::RasterOp rop, bool ignoreMask )
  • void bitBlt ( QPaintDevice * dst, const QPoint & dp, const QPaintDevice * src, const QRect & sr, RasterOp rop )

详细描述

QPaintDevice类是所有可以绘制的对象的基类。

一个绘制设备就是一个可以使用QPainter来绘制的二维空间的抽象。绘画的能力由子类QWidgetQPixmapQPictureQPrinter来实现。

绘制设备的默认坐标系统的原点在左上角。X向右增加,Y向下增加。单位是一个像素。这里有几种方法在使用绘制工具时来设置用户自定义的坐标系统,比如,使用QPainter::setWorldMatrix()。

实例(在一个绘制设备上绘画):

    void MyWidget::paintEvent( QPaintEvent * )
    {
        QPainter p;                       // 我们的绘制工具
        p.begin( this );                  // 开始在窗口部件上绘制
        p.setPen( red );                  // 红色的外框
        p.setBrush( yellow );             // 用黄色填充
        p.drawEllipse( 10, 20, 100,100 ); // 在(10, 20)位置的100x100的椭圆 
        p.end();                          // 绘制结束
    }
    

位块传送是从一个绘制设备向另一个(或者它自己)复制像素的非常有用的函数。它是由全局函数bitBlt()实现的。

实例:(向右滚动窗口部件内容10个像素):

    bitBlt( myWidget, 10, 0, myWidget );
    

警告: 在任何绘制设备创建之前,Qt需要一个QApplication对象存在。绘制设备访问窗口系统资源,并且这些资源在一个应用程序对象没有创建之前是没有初始化的。

也可以参考图形类 and 图像处理类


成员函数文档

QPaintDevice::QPaintDevice ( uint devflags ) [保护]

使用内部标记devflags构造一个绘制设备。这个构造函数只能由QPaintDevice的子类调用。

QPaintDevice::~QPaintDevice () [虚]

销毁绘制设备并且释放窗口系统资源。

bool QPaintDevice::cmd ( int, QPainter *, QPDevCmdParam * ) [虚 保护]

从绘制工具中解释绘画指令的内部虚函数。

由不直接支持绘制图画的子类实现(外部绘制设备,比如,QPicture)。

Qt::HANDLE QPaintDevice::handle () const [虚]

返回用于低级访问的绘制设备的窗口系统句柄。使用这个函数是不可移植的。

HANDLE的类型根据平台的不同而不同,详细情况请见qpaintdevice.hqwindowdefs.h

也可以参考x11Display()。

bool QPaintDevice::isExtDev () const

如果设备是一个外部绘制设备,返回真,否则返回假。

外部绘制设备不能作为bitBlt()的源。QPictureQPrinter是外部绘制设备。

bool QPaintDevice::paintingActive () const

如果设备正在被绘制,比如某人已经调用了QPainter::begin()但还没有对这个设备调用QPainter::end(),返回真,否则返回假。

也可以参考QPainter::isActive()。

int QPaintDevice::x11AppCells () [静态]

返回X显示全部到应用程序的颜色映射的条目的数量(仅X11下有效)。使用这个函数是不可移植的。

也可以参考x11Colormap()。

Qt::HANDLE QPaintDevice::x11AppColormap () [静态]

返回X显示全部到应用程序的颜色映射(仅X11下有效)。使用这个函数是不可移植的。

也可以参考x11Cells()。

bool QPaintDevice::x11AppDefaultColormap () [静态]

返回X显示全部到应用程序的默认颜色映射(仅X11下有效)。使用这个函数是不可移植的。

也可以参考x11Cells()。

bool QPaintDevice::x11AppDefaultVisual () [静态]

返回X显示全部到应用程序的默认视件(Visual)(仅X11下有效)。使用这个函数是不可移植的。

int QPaintDevice::x11AppDepth () [静态]

返回X显示全部到应用程序的深度(仅X11下有效)。使用这个函数是不可移植的。

也可以参考QPixmap::defaultDepth()。

Display * QPaintDevice::x11AppDisplay () [静态]

返回X显示全部到应用程序的指针(仅X11下有效)。使用这个函数是不可移植的。

也可以参考handle()。

int QPaintDevice::x11AppDpiX () [静态]

返回X显示的水平DPI(仅X11下有效)。使用这个函数是不可移植的。关于可移植的访问的相关信息请看QPaintDeviceMetrics。使用这个函数是不可移植的。

也可以参考x11AppDpiY()、x11SetAppDpiX()和QPaintDeviceMetrics::logicalDpiX()。

int QPaintDevice::x11AppDpiY () [静态]

返回X显示的垂直DPI(仅X11下有效)。使用这个函数是不可移植的。关于可移植的访问的相关信息请看QPaintDeviceMetrics。使用这个函数是不可移植的。

也可以参考x11AppDpiX()、x11SetAppDpiY()和QPaintDeviceMetrics::logicalDpiY()。

int QPaintDevice::x11AppScreen () [静态]

返回X显示全部到应用程序的屏幕数量(仅X11下有效)。使用这个函数是不可移植的。

void * QPaintDevice::x11AppVisual () [静态]

返回X显示全部到应用程序的视件(Visual)(仅X11下有效)。使用这个函数是不可移植的。

int QPaintDevice::x11Cells () const

返回X显示全部到绘制设备的颜色映射的条目的数量(仅X11下有效)。使用这个函数是不可移植的。

也可以参考x11Colormap().

Qt::HANDLE QPaintDevice::x11Colormap () const

返回X显示全部到绘制设备的颜色映射(仅X11下有效)。使用这个函数是不可移植的。

也可以参考x11Cells()。

bool QPaintDevice::x11DefaultColormap () const

返回X显示全部到绘制设备的默认颜色映射(仅X11下有效)。使用这个函数是不可移植的。

也可以参考x11Cells()。

bool QPaintDevice::x11DefaultVisual () const

返回X显示全部到绘制设备的默认视件(Visual)(仅X11下有效)。使用这个函数是不可移植的。

int QPaintDevice::x11Depth () const

返回X显示全部到绘制设备的深度(仅X11下有效)。使用这个函数是不可移植的。

也可以参考QPixmap::defaultDepth()。

Display * QPaintDevice::x11Display () const

返回X显示全部到绘制设备的指针(仅X11下有效)。使用这个函数是不可移植的。

也可以参考handle()。

int QPaintDevice::x11Screen () const

返回X显示全部到绘制设备的屏幕数量(仅X11下有效)。使用这个函数是不可移植的。

void QPaintDevice::x11SetAppDpiX ( int dpi ) [静态]

设置通过x11AppDpiX()返回的值为dpi。默认情况下决定于显示配置。这个值的变化将会使字体的边缘发生变化,并且许多其它的度量标准将不被推荐。使用这个函数是不可移植的。

也可以参考x11SetAppDpiY()。

void QPaintDevice::x11SetAppDpiY ( int dpi ) [静态]

设置通过x11AppDpiY()返回的值为dpi。默认情况下决定于显示配置。这个值的变化将会使字体的边缘发生变化,并且许多其它的度量标准将不被推荐。使用这个函数是不可移植的。

也可以参考x11SetAppDpiX()。

void * QPaintDevice::x11Visual () const

返回X显示全部到绘制设备的视件(Visual)(仅X11下有效)。使用这个函数是不可移植的。


相关函数

void bitBlt ( QPaintDevice * dst, int dx, int dy, const QPaintDevice * src, int sx, int sy, int sw, int sh, Qt::RasterOp rop, bool ignoreMask )

把一个像素块从src复制到dst,也许根据光栅操作rop来合并每一个像素。sxsysrc中的左上像素,默认为(0, 0),dxdydst的左上位置并且swsh是复制块的大小(默认情况下都是src的)。

rop的最普通的值是CopyROP和XorROP,Qt::RasterOp文档中定义了所有的可能值。

如果ignoreMask是真(默认是假)并且src是一个遮蔽的QPixmap,整个二进制块被src->mask()遮蔽。

如果srcdstswsh为0,bitBlt()不会做任何事情。如果swsh为负,bitBlt()的复制会从sx开始(分别地,sy)并且到src右端点(分别地,下)结束。

src必须是一个QWidget或者QPixmap。比如,你不能从一个QPrinter做块复制。如果你试图从一个不支持的设备做块复制,bitBlt()将不会做任何事情。

如果src的深度比dst高,bitBlt()不会做任何事。如果你需要这样的操作,比如在一个8位的窗口部件绘制24位的像素映射,你必须使用drawPixmap()。

void bitBlt ( QPaintDevice * dst, const QPoint & dp, const QPaintDevice * src, const QRect & sr, RasterOp rop )

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

使用了目标点dp和源矩形sr重载bitBlt()。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版