2015-01-16 3 views
0

Я создаю QGraphicsView, который показывает QGraphicsScene.QGraphicsScene фоновая кисть офсет?

я установить фон сцены в растр QImage с:

scene()->setBackgroundBrush(myQImage); 

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

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

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

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

+1

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

+0

Хороший подход, хотя, поскольку он представляет собой пользовательскую графику, с предоставленным пользователем смещением (я редактировал OP с контекстом), мне пришлось бы редактировать «на лету» в памяти, что было бы kludgy ... но возможно, и, по крайней мере, не сломает полосу прокрутки. Plonk это в ответ, и я приму его, если не появится лучший подход. –

+0

Не забудьте написать это как ответ, или я не могу отметить это как принято! –

ответ

1

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