我陷入困境,建立了QPainter转型。我已经阅读了Qt文档但是脑筋流正在阻碍。
void MyWidget::paintEvent (QPaintEvent *) {
QPainter painter (this);
// ...
我想渲染逻辑坐标中描述的场景。场景包括一个"阶段"这是要渲染的矩形。阶段在逻辑坐标中指定。小部件应该有一个视口(这是正确的术语吗?)
在上述情况下,舞台将由
之类的东西描述QRectF stage_rect (QPointF(0.2,5.1), QPointF(6.5,1.9));
如果我设置转换并调用
painter.drawText (1.2, 2.2, "abc");
它应该出现在小部件的左下方,如上所示 - 也就是说,逻辑坐标向上增加,舞台的整个高度显示在小部件中,并且舞台被水平裁剪以保持纵横比(虽然小部件可能太宽/太短,但在这种情况下,舞台将被垂直裁剪。)
我应该对QPainter进行什么样的转换才能使窗口紧贴舞台?
答案 0 :(得分:1)
Qt的坐标系正向下向右而不是向上和向右,这正是你想要的。为此,请将变换中的Y比例因子设置为-1,将X比例因子设置为1;这将翻转Y坐标而不是X.但是,如果你将这种转换应用于画家,我相信你最终会将你的文字颠倒过来。您可能想要的是变换坐标,然后将变换后的坐标传递给画家。