2011-10-11 386 views
0

在PyQt4 Gui中,我需要仔细放置多个QPainter Pixmaps。
指定新Pixmaps的坐标和高度以及宽度时,我要求所有单位都是以像素为单位。
(否则,我的Gui会在我自己的不同分辨率的屏幕上被破坏)。QRect宽度和高度(以像素为单位)?

放置Pixmap时,我使用DrawPixmap(QRect,QPixmap)函数。
需要放置的Pixmaps位于4个整数的元组的QRects列表中,这些元素指定了Pixmap(px)左上角和Pixmap右下角(px中)的坐标, 。例如:
Blocks = [QtCore.QRect(x1,y1,x2,y2)等]。

不幸的是,当传递给DrawPixmap(QRect,QPixmap)时,元组的最后两个数字被解释为宽度和高度,它们的单位是(cm)。

我的问题...
是否有一种方法可以完全以像素为单位指定Pixmaps尺寸?
(通过传递像素的宽度和高度,或维度框角落的两个像素坐标)。

我无法在QPainter或QRect类参考中找到一种方法。
谢谢!


规格:
的Python 2.7
PyQt4的
的Windows 7 32位
IDLE

+0

像素图总是以像素为单位进行度量。 Pixmap ==像素图。你确定你没有更高的DPI图像吗?您是否考虑过查看QPainter的drawPixmap函数,该函数在像素图中同时使用目标和源像素? –

+0

我将源图像操作为必须以像素为单位的尺寸。出于某种原因,所有尺寸旁边的尺寸规格都是宽度和高度,或根本没有规定! –

回答

0

QPainter类参考,你可以找到drawPixmap方法的不同重载。读documentation告诉QPainter::drawPixamp(QRect, QPixmap)正是你想要的。这可能是pyqt的一个特定问题,其中QRect的格式被更多地识别为QRectF。您也可以使用获取左上角坐标以及您所在区域的宽度和高度的重载函数,如下所示:QPainter::drawPixamp(x, y, width, height, QPixmap)

+0

我已经尝试了这两个函数,并且如上所述,'宽度'和'高度'被解释为厘米(文档所指的),而不是像素。由于解决方案问题,我只能通过像素。 –

+0

等待....现在我不太确定... 我是怎么想到高度和宽度被解释为cm? 当然,我读过它的地方.... –