可寫點陣圖(WriteableBitmap)
WriteableBitmap派生自BitmapSource類,因此它屬於記憶體點陣圖,不過WriteableBitmap類公開了表示影像畫素資料的PixelBuffer屬性,可以通過該屬性在執行時寫入或修改畫素資料,以達到編輯影像的效果。
下面示例演示通過向WriteableBitmap物件寫入畫素資料的形式來動態建立記憶體影像。
通過程式碼生成的記憶體影像將顯示在Image控制元件中,Button控制元件的Tapped事件處理程式碼如下:
private async void Button_Tapped(object sender, TappedRoutedEventArgs e)
{
#region 可寫點陣圖(WriteableBitmap)
byte[] data = new byte[8 * 6 * 4];
for (int i = 0; i < data.Length; i+=4)
{
if ((i/4)%2 == 0)
{
data[i] = 0; //B
data[i + 1] = 0; //G
data[i + 2] = 255; //R
data[i + 3] = 255; //A
}
else
{
data[i] = 0; //B
data[i + 1] = 255; //G
data[i + 2] = 0; //R
data[i + 3] = 255; //A
}
}
WriteableBitmap wb = new WriteableBitmap(8, 6);
data.CopyTo(wb.PixelBuffer);
img.Source = wb;
#endregion
}
寫入WriteableBitmap物件中的畫素資料格式為BGRA8,即顏色通道的寫入順序為B-G-R-A,每個通道值8位,剛好一個位元組,因此,影像中的每個畫素點均佔用4個位元組的空間(32位)。上面程式碼生成寬度為8畫素,高度為6畫素的影像,由於每個畫素點佔用4個位元組,因此位元組陣列data的大小的最後要乘以4。
雖然通過PixelBuffer屬性可以訪問影像的畫素資料,但是該屬性不能直接操作,因此,可以呼叫byte[](位元組陣列)的CopyTo擴充套件方法把位元組內容複製到PixelBuffer屬性的緩衝區中。CopyTo擴充套件方法是在System.Runtime.InteropServices.WindowsRuntime名稱空間下的WindowsRuntimeBufferExtensions類中定義的。
本例中,根據寫入畫素點的次序是否為偶數(是否可被2整除),分配不同的BGRA值。
示例效果如下:
相關文章
- 點陣圖
- ClickHouse 留存、路徑、漏斗、session 點陣圖 roaringbitmap 點陣圖最佳化Session
- 點陣圖字型匯入
- PHP 文字生成點陣圖PHP
- Redis 應用-點陣圖Redis
- 點陣圖索引(轉載)索引
- WPF WriteableBitmap DispatcherTimer WritePixels BackBufferStrideIDE
- 電商圖片線上製作,可摳圖可寫文案
- PHP掃描圖片轉點陣 二維碼轉點陣PHP
- 點陣圖與ERP場景
- Android Bitmap(點陣圖)詳解Android
- 演算法-點陣圖排序演算法排序
- Python點陣圖索引學習Python索引
- 代理模式+react+ 圖片佔點陣圖模式React
- 點陣圖(bitmap)原理以及實現
- 點陣圖索引的工作原理 - Richard索引
- layui圖片懶載入-loading佔點陣圖UI
- VC 點陣圖按鈕CBitmapButton的使用
- hash join構建點陣圖的理解
- 雜湊表擴充套件—點陣圖套件
- Oracle assm三級點陣圖結構解析OracleSSM
- Android實現二值點陣圖識別Android
- 編寫可移植C/C++程式的要點C++
- FreeType Glyph Conventions 翻譯(7)——FreeType點陣圖 Bitmaps
- oracle點陣圖索引對DML操作的影響Oracle索引
- Redis 精確去重計數 —— 咆哮點陣圖Redis
- UITableView佔點陣圖的低耦合性設計UIView
- 如何優雅地使用Redis之點陣圖操作Redis
- 點亮點陣以及點陣的影像顯示
- 標籤列印軟體中如何迴圈列印點陣圖圖片
- 陣列可響應陣列
- Java-GUI程式設計之處理點陣圖JavaGUI程式設計
- 優先順序點陣圖演算法詳解演算法
- node那點事(二) — Writable streams(可寫流)、自定義流
- node那點事(二) -- Writable streams(可寫流)、自定義流
- Mac64點陣圖片編輯器——PostworkShop 3 for MacMac
- WPF WriteableBitmap透過GDI+繪製幫助類
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序