2015-10-07 99 views
0

我有一張地圖圖片。我想將地圖的左右(東西)邊連接起來,這樣您就可以永遠滾動到右側或左側,並繼續滾動同一張圖片。我環顧四周,無法找到關於該主題的任何內容(可能是因爲我不知道該怎麼稱呼它)。我還想在一個框架中放置照片,我可以抓住並拖動它來移動照片。我試圖在Tkinter做到這一點,但我有一種感覺,可能有更簡單的方法來做到這一點。在python中連接圖片的邊緣

+0

你想如何實現這個無限的滾動?通過點擊並拖動鼠標,類似於谷歌地圖的工作方式?或者,你是否期望有左/右按鈕來移動一個圖像而另一個圖像? –

回答

0

我能用pygame得到我想要的結果。

的blit(源,DEST,面積=無,special_flags = 0) - >的Rect

我設置一個矩形兩次我的地圖的寬度,並設置一個函數總是具有兩個地圖繪製並排。我添加了一些函數來將地圖移動爲寬度的百分比。

SCREENRECT = Rect(0, 0, 6025, 3010) 
... 
class Arena: 
    speed = 15 
    def __init__(self): 
     w = SCREENRECT.width 
     h = SCREENRECT.height 
     self.tilewidth = self.oceantile.get_width() 
    self.tileheight = self.oceantile.get_height() 
    print self.tilewidth, self.tileheight 
     self.counter = 0 
     self.counter2 = 0 
    self.ocean = pygame.Surface((w+self.tilewidth,h)).convert() 
     for x in range(w/self.tilewidth): 
      for y in range(h/self.tileheight): 
       self.ocean.blit(self.oceantile, (x*self.tilewidth, y*self.tileheight)) 
    def left(self): 
     self.counter = (self.counter - self.speed) % self.tilewidth 
    def right(self): 
     self.counter = (self.counter + self.speed) % self.tilewidth 
    def up(self): 
     if self.counter2 > 0: self.counter2 = (self.counter2 - self.speed) % self.tileheight 
    def down(self): 
     if self.counter2 < 1140: self.counter2 = (self.counter2 + self.speed) % self.tileheight 
screen.blit(arena.map, (0, 0), (arena.counter, arena.counter2, SCREENRECT.width, SCREENRECT.height)) 

然後,我使用blit函數繪製地圖,通過區域輸入消除x和y像素。

blit(source, dest, area=None, special_flags = 0) -> Rect

screen.blit(arena.map, (0, 0), (arena.counter, arena.counter2, SCREENRECT.width, SCREENRECT.height)). 

目前我用鍵盤控制鼠標的滾動,但搶和拖動功能不應該是很難與Pygame的模塊弄清楚。

0

(實際上,你問2不同,不是很精確的問題)

  1. 滾動永遠:從Python中的常見方法是 獨立的邊緣鏡像圖像,因此您可以實現幾乎 無盡的世界從1或一些圖像(地圖的瓷磚)。
  2. GUI框架/ API:根據我的經驗,Qt(在你的情況下可能是PyQt)是 ,有很好的文檔和設計,很容易實現與操作系統無關的 GUI。