Canvas.SaveLayer 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| SaveLayer(RectF, Paint) |
這的行為與 save() 相同,但此外,它也會配置並重新導向繪圖至螢幕外轉譯目標。 |
| SaveLayer(RectF, Paint, SaveFlags) |
這的行為與 save() 相同,但此外,它還會配置並將繪圖重新導向至螢幕外位圖。 |
| SaveLayer(Single, Single, Single, Single, Paint) |
方便使用 |
| SaveLayer(Single, Single, Single, Single, Paint, SaveFlags) |
SaveLayer() 的協助程式版本會採用 4 個值,而不是 RectF。 |
SaveLayer(RectF, Paint)
這的行為與 save() 相同,但此外,它也會配置並重新導向繪圖至螢幕外轉譯目標。
[Android.Runtime.Register("saveLayer", "(Landroid/graphics/RectF;Landroid/graphics/Paint;)I", "GetSaveLayer_Landroid_graphics_RectF_Landroid_graphics_Paint_Handler")]
public virtual int SaveLayer(Android.Graphics.RectF? bounds, Android.Graphics.Paint? paint);
[<Android.Runtime.Register("saveLayer", "(Landroid/graphics/RectF;Landroid/graphics/Paint;)I", "GetSaveLayer_Landroid_graphics_RectF_Landroid_graphics_Paint_Handler")>]
abstract member SaveLayer : Android.Graphics.RectF * Android.Graphics.Paint -> int
override this.SaveLayer : Android.Graphics.RectF * Android.Graphics.Paint -> int
參數
- bounds
- RectF
可能是 Null。 螢幕外轉譯目標的大小上限必須是 (在本機座標中)
- paint
- Paint
這會複製,並在呼叫 restore() 時套用至 offscreen。
傳回
要傳遞至 restoreToCount() 的值以平衡此 save()
- 屬性
備註
這的行為與 save() 相同,但此外,它也會配置並重新導向繪圖至螢幕外轉譯目標。
<strong>Note:</strong> 這種方法非常昂貴,對於包含內容的渲染成本超過兩倍。 請盡可能避免使用這個方法,而是在 android.view.View#LAYER_TYPE_HARDWARE hardware layer 檢視上使用 來套用 xfermode、色彩篩選或 Alpha,因為它的執行效能會比這個方法好得多。
所有繪圖呼叫都會導向至新配置的螢幕外轉譯目標。 只有當進行 restore() 的平衡呼叫時,才會將螢幕外緩衝區繪製回 Canvas 的目前目標(如果這些呼叫是巢狀的,可能是上一層)。
當呼叫 restore() 時,會套用 Paint - Paint#getAlpha() alpha、 Paint#getXfermode() Xfermode和 的屬性,並在 Paint#getColorFilter() ColorFilter 螢幕外轉譯目標被繪製回來時套用。
的 android.graphics.Canvas.saveLayer(android.graphics.RectF, android.graphics.Paint)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
SaveLayer(RectF, Paint, SaveFlags)
這的行為與 save() 相同,但此外,它還會配置並將繪圖重新導向至螢幕外位圖。
[Android.Runtime.Register("saveLayer", "(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I", "GetSaveLayer_Landroid_graphics_RectF_Landroid_graphics_Paint_IHandler")]
public virtual int SaveLayer(Android.Graphics.RectF? bounds, Android.Graphics.Paint? paint, Android.Graphics.SaveFlags saveFlags);
[<Android.Runtime.Register("saveLayer", "(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I", "GetSaveLayer_Landroid_graphics_RectF_Landroid_graphics_Paint_IHandler")>]
abstract member SaveLayer : Android.Graphics.RectF * Android.Graphics.Paint * Android.Graphics.SaveFlags -> int
override this.SaveLayer : Android.Graphics.RectF * Android.Graphics.Paint * Android.Graphics.SaveFlags -> int
參數
- bounds
- RectF
可能是 Null。 螢幕外點陣圖的大小上限必須是 (在本機座標中)
- paint
- Paint
這會複製,並在呼叫 restore() 時套用至 offscreen。
- saveFlags
- SaveFlags
如需效能考慮, #ALL_SAVE_FLAG 請參閱_SAVE_FLAG常數。
傳回
要傳遞至 restoreToCount() 的值以平衡此 save()
- 屬性
備註
這的行為與 save() 相同,但此外,它還會配置並將繪圖重新導向至螢幕外位圖。
<strong>Note:</strong> 這種方法非常昂貴,對於包含內容的渲染成本超過兩倍。 請避免使用這個方法,尤其是在提供的界限很大時。 建議您在 android.view.View#LAYER_TYPE_HARDWARE hardware layer 檢視上使用 來套用 xfermode、色彩篩選或 Alpha,因為它的執行效能會比此方法好得多。
所有繪圖呼叫都會導向至新配置的螢幕外位圖。 只有在進行 restore() 的平衡呼叫時,才會將螢幕外緩衝區繪製回 Canvas 的目前目標(螢幕、目標位圖或上一層)。
當呼叫 restore() 時,會套用 Paint - Paint#getAlpha() alpha、 Paint#getXfermode() Xfermode和 的屬性,並在 Paint#getColorFilter() ColorFilter 螢幕外位圖被繪製回來時套用。
從 API 層級 API 層級 Build.VERSION_CODES#P 起,唯一有效的 saveFlags 是 #ALL_SAVE_FLAG。 所有其他旗標都會被忽略。
已取代這個成員。 請改用 #saveLayer(RectF, Paint)。
的 android.graphics.Canvas.saveLayer(android.graphics.RectF, android.graphics.Paint, int)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
SaveLayer(Single, Single, Single, Single, Paint)
方便使用 #saveLayer(RectF, Paint) 周框的四個浮點座標。
[Android.Runtime.Register("saveLayer", "(FFFFLandroid/graphics/Paint;)I", "GetSaveLayer_FFFFLandroid_graphics_Paint_Handler")]
public virtual int SaveLayer(float left, float top, float right, float bottom, Android.Graphics.Paint? paint);
[<Android.Runtime.Register("saveLayer", "(FFFFLandroid/graphics/Paint;)I", "GetSaveLayer_FFFFLandroid_graphics_Paint_Handler")>]
abstract member SaveLayer : single * single * single * single * Android.Graphics.Paint -> int
override this.SaveLayer : single * single * single * single * Android.Graphics.Paint -> int
參數
- left
- Single
- top
- Single
- right
- Single
- bottom
- Single
- paint
- Paint
傳回
- 屬性
備註
方便使用 #saveLayer(RectF, Paint) 周框的四個浮點座標。
的 android.graphics.Canvas.saveLayer(float, float, float, float, android.graphics.Paint)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
SaveLayer(Single, Single, Single, Single, Paint, SaveFlags)
SaveLayer() 的協助程式版本會採用 4 個值,而不是 RectF。
[Android.Runtime.Register("saveLayer", "(FFFFLandroid/graphics/Paint;I)I", "GetSaveLayer_FFFFLandroid_graphics_Paint_IHandler")]
public virtual int SaveLayer(float left, float top, float right, float bottom, Android.Graphics.Paint? paint, Android.Graphics.SaveFlags saveFlags);
[<Android.Runtime.Register("saveLayer", "(FFFFLandroid/graphics/Paint;I)I", "GetSaveLayer_FFFFLandroid_graphics_Paint_IHandler")>]
abstract member SaveLayer : single * single * single * single * Android.Graphics.Paint * Android.Graphics.SaveFlags -> int
override this.SaveLayer : single * single * single * single * Android.Graphics.Paint * Android.Graphics.SaveFlags -> int
參數
- left
- Single
- top
- Single
- right
- Single
- bottom
- Single
- paint
- Paint
- saveFlags
- SaveFlags
價值要麼是 0,要麼是 ALL_SAVE_FLAG
傳回
- 屬性
備註
SaveLayer() 的協助程式版本會採用 4 個值,而不是 RectF。
從 API 層級 API 層級 Build.VERSION_CODES#P 起,唯一有效的 saveFlags 是 #ALL_SAVE_FLAG。 所有其他旗標都會被忽略。
已取代這個成員。 請改用 #saveLayer(float, float, float, float, Paint)。
的 android.graphics.Canvas.saveLayer(float, float, float, float, android.graphics.Paint, int)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。