我想實作我自己的ImageSource的子類。Xamarin Forms有FileImageSource、UriImageSource和其他幾個ImageSource的子類,但都不能滿足我的需求。
為了了解如何實作ImageSource子類,我查看了github上FileImageSource的實作(https://github.com/xamarin/Xamarin.Forms/blob/5.0.0/Xamarin.Forms.Core/FileImageSource.cs)
我期望發現子類會覆寫一個或多個ImageSource方法,以實際讀取影像檔案并將檔案中的位元組提供給呼叫平臺。但是,FileImageSource的源代碼中沒有這樣的內容! 事實上,它們使用File只是為了覆寫ImageSource.IsEmpty。這怎么可能呢?如果一個影像包含在一個檔案中,你需要讀取該檔案來顯示這個影像,不是嗎?
我錯過了什么?如果我想實作我自己的 ImageSource 子類,我的子類如何向平臺回傳影像資料呢?
編輯。 感謝所有提議以不同方式解決問題的人,并詢問為什么現有的 ImageSource 子類不能滿足我的需求。
即使有不同的方法來解決我眼前的問題,從教育的角度來看,知道Xamarin Forms如何在不讀取檔案的情況下顯示影像檔案仍然是很有趣的。FileImageSource的源代碼很短,除了實作IsEmpty之外,似乎并沒有使用檔案。這將困擾我,直到我知道這是如何作業的。
uj5u.com熱心網友回復:
[使用轉換器解決這個問題]
不要創建一個新的ImageSource,你可以創建一個轉換器(如果你正在使用捆綁)。
因此,如果你有一個類似于位元組陣列的東西,并且你想將其顯示為影像,你可以將位元組陣列轉換為StreamImageSource
[編輯:知道它是如何作業的]
如果你想知道它是如何在內部作業的,以及它是如何將檔案轉換為實際的影像的,你將不得不深入到代碼中,并檢查平臺的實作。 例如,這里你有安卓渲染器。你會發現IImageSourceHandler.cs和FontImageSourceHandler以及FileImageSourceHandler等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329860.html
標籤:
