Смещение фоновой кисти QGraphicsScene?

Я создаю QGraphicsView, который показывает QGraphicsScene.

Я установил фон сцены в растровое изображение QImage с помощью:

scene()->setBackgroundBrush(myQImage);

Я хотел бы, чтобы это изображение отображалось относительно смещения, как я могу сделать с:

painter.drawTiledPixmap(this->rect(), QPixmap::fromImage(myQImage), bgOffset);

Есть ли способ сделать это, или я должен просто игнорировать способность фоновой кисти QGraphicsScene и делать это с помощью художника? Тем не менее, это лишает меня кэширования того, что может быть большим фоном, и может сильно испортить полосы прокрутки, поэтому я бы предпочел этого не делать.

[Редактировать, контекст: у меня есть то, что по сути является дизайнером персонажей на основе спрайтов (или дизайнером аватаров). Я хочу, чтобы люди могли отображать мозаичный фон по своему выбору, но я не могу ограничивать размеры фона, и центральная плитка фона должна отображаться с заданным пользователем смещением относительно спрайта, который они проектируют. Этот фон может быть любым: от простого фона сетки (для выравнивания пикселей) до снимка экрана внутриигровой карты (персонаж должен иметь возможность выравнивания, чтобы стоять в центре желаемого квадрата карты) до изображения аватара другого персонажа, чтобы он мог видеть. сравнивать или выравнивать с точностью до пикселя и так далее...]


person Dewi Morgan    schedule 16.01.2015    source источник
comment
Вы можете отредактировать само изображение, чтобы эмулировать смещение фона. Вам нужно прибегнуть к строкам и столбцам, чтобы исходная точка находилась в (0, 0). Вы можете сделать это, разрезав изображение на 4 части и соединив их вместе в другом порядке.   -  person Pavel Strakhov    schedule 17.01.2015
comment
Хороший подход, хотя, поскольку это предоставленная пользователем графика с заданным пользователем смещением (я редактировал OP с контекстом), мне пришлось бы редактировать на лету в памяти, что было бы неуклюже... но выполнимо , и, по крайней мере, не сломает полосы прокрутки. Вставьте это в ответ, и я приму его, если не появится лучший подход.   -  person Dewi Morgan    schedule 18.01.2015
comment
Не забудьте записать это как ответ, иначе я не смогу отметить его как принятый!   -  person Dewi Morgan    schedule 27.01.2015


Ответы (1)


Вы можете отредактировать само изображение, чтобы эмулировать смещение фона. Вам нужно прибегнуть к строкам и столбцам, чтобы исходная точка находилась в (0, 0). Вы можете сделать это, разрезав изображение на 4 части и соединив их вместе в другом порядке.

person Pavel Strakhov    schedule 27.01.2015