語言

Canvas.SaveLayer 方法

定義

多載

名稱 Description
SaveLayer(RectF, Paint)

這的行為與 save() 相同,但此外,它也會配置並重新導向繪圖至螢幕外轉譯目標。

SaveLayer(RectF, Paint, SaveFlags)

這的行為與 save() 相同,但此外,它還會配置並將繪圖重新導向至螢幕外位圖。

SaveLayer(Single, Single, Single, Single, Paint)

方便使用 #saveLayer(RectF, 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 屬性授權中所述的詞彙使用。

適用於