返回介绍

QPaintDevice类

发布于 2019-10-04 15:01:54 字数 7658 浏览 898 评论 0 收藏 0

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

#include <qpaintdevice.h>

由QPixmap、QWidget、QPicture和QPrinter继承。

所有成员函数的列表。

公有成员

  • virtual ~QPaintDevice ()
  • bool isExtDev () const
  • bool paintingActive () const
  • virtual HDC handle () const
  • virtual Qt::HANDLE handle () const
  • Display * x11Display () const
  • int x11Screen () const
  • int x11Depth () const
  • int x11Cells () const
  • Qt::HANDLE x11Colormap () const
  • bool x11DefaultColormap () const
  • void * x11Visual () const
  • bool x11DefaultVisual () const

静态公有成员

  • Display * x11AppDisplay ()
  • int x11AppScreen ()
  • int x11AppDepth ()
  • int x11AppCells ()
  • int x11AppDpiX ()
  • int x11AppDpiY ()
  • Qt::HANDLE x11AppColormap ()
  • bool x11AppDefaultColormap ()
  • void * x11AppVisual ()
  • bool x11AppDefaultVisual ()
  • void x11SetAppDpiX ( intdpi )
  • void x11SetAppDpiY ( intdpi )

保护成员

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

相关函数

  • void bitBlt ( QPaintDevice*dst, intdx, intdy, constQPaintDevice*src, intsx, intsy, intsw, intsh, Qt::RasterOprop, boolignoreMask )
  • void bitBlt ( QPaintDevice*dst, constQPoint&dp, constQPaintDevice*src, constQRect&sr, RasterOprop )

详细描述

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

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

绘制设备的默认坐标系统的原点在左上角。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 ( uintdevflags ) [保护]

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

QPaintDevice::~QPaintDevice () [虚]

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

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

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

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

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

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

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

也可以参考x11Display()。

bool QPaintDevice::isExtDev () const

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

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

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 ( intdpi ) [静态]

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

也可以参考x11SetAppDpiY()。

void QPaintDevice::x11SetAppDpiY ( intdpi ) [静态]

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

也可以参考x11SetAppDpiX()。

void * QPaintDevice::x11Visual () const

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


相关函数

void bitBlt ( QPaintDevice*dst, intdx, intdy, constQPaintDevice*src, intsx, intsy, intsw, intsh, Qt::RasterOprop, boolignoreMask )

把一个像素块从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, constQPoint&dp, constQPaintDevice*src, constQRect&sr, RasterOprop )

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文