截圖 link

Ren’Py內建了遊戲截圖功能,並可以使用截圖用作可視組件。 將截圖用作可視組件後,可以在“紙娃娃”系統中將截圖保存,以備後續使用,例如創建虛擬形象。

Ren’Py使用截圖功能後,無論是整個界面還是單個可視組件的截圖,都會根據窗口縮放和DPI改變調整繪製尺寸。 核心在於實際觀感,而不是截圖資源的原生尺寸。

預設的截圖快捷鍵是鍵盤的“S”。

下列是截圖相關的行為和界面函數。

相關函數 link

下列函數也可以用於截圖:

renpy.render_to_file(d, filename, width=None, height=None, st=0.0, at=None, resize=False) link

渲染某個可視組件或Render對象,然後將渲染結果保存為一個文件。此次渲染會使用Ren’Py的顯示系統,因此窗口縮放會影響渲染結果。

d

需要渲染的可視組件或Render對象。若該項是一個Render對象,忽略 widthheightstat 參數。

filename

一個字串,指定需要保存的檔案名。文件路徑預設為遊戲基目錄。副檔名比為是 .png。

width

d 的寬度,虛擬像素值。若為None,使用 config.screen_width 的值。

height

d 的高度,虛擬像素值。若為None,使用 config.screen_height 的值。

st

顯示時間軸的渲染時間點。

at

動畫時間軸的渲染時間點。若為None,則使用 st 的值。

resize

若為True,圖像尺寸會調整,與可視組件或Render對象的虛擬像素值保持一致。 但這樣做可能會降低截圖結果的圖像質量。

該函數只能在Ren’Py的顯示系統啟動後才能調用,不能在初始化階段或首次交互行為之前調用。

Ren’Py在遊戲運行時不會重新掃描圖片資源文件,因此不能直接將截圖文件作為遊戲運行時的必備資源。

render_to_surface(d, width=None, height=None, st=0.0, at=None, resize=False) link

該函數渲染某個可視組件或Render對象,返回一個pygame_sdl2表面紋理(surface)。 此次渲染會使用Ren’Py的顯示系統,因此窗口縮放會影響渲染結果。

d

需要渲染的可視組件或Render對象。若該項是一個Render對象,忽略 widthheightstat 參數。

filename

一個字串,指定需要保存的檔案名。文件路徑預設為遊戲基目錄。副檔名比為是 .png。

width

d 的寬度,虛擬像素值。若為None,使用 config.screen_width 的值。

height

d 的高度,虛擬像素值。若為None,使用 config.screen_height 的值。

st

顯示時間軸的渲染時間點。

at

動畫時間軸的渲染時間點。若為None,則使用 st 的值。

resize

若為True,圖像尺寸會調整,與可視組件或Render對象的虛擬像素值保持一致。 但這樣做可能會降低截圖結果的圖像質量。

該函數只能在Ren’Py的顯示系統啟動後才能調用,不能在初始化階段或首次交互行為之前調用。

renpy.screenshot(filename) link

將截圖保存為 filename

如果截圖保存成功就返回True。如果由於某些原因保存失敗就返回False。

config.screenshot_pattern_screenshot_pattern 兩項可以控制截圖檔案名。

renpy.screenshot_to_bytes(size) link

將截圖以bytes對象形式返回,可以作為參數傳入 im.Data() 。該二進制對象將是png格式,例如:

$ data = renpy.screenshot_to_bytes((640, 360))
show expression im.Data(data, "screenshot.png"):
    align (0, 0)

將顯示一個截圖。bytes對象可以儲存到存檔文件和持久化數據中。不過這個對象可能很大,注意不要儲存太多類似的對象。

size

截圖後重新縮放的目標尺寸。若為None,截圖將按用戶窗口的尺寸進行調整,不包含窗口的標題欄。

該函數運行可能比較慢,通常用在類似存檔的截圖需求中,而不應該用在需要即時生效的功能中。