支持格式:BMP、GIF、JPEG、EXIF、PNG、TIFF、ICON、WMF、EMF等,幾乎涵蓋全部經常使用格式 算法
圖像類: 數組
經常使用屬性以及方法: 網絡
名稱ide |
說明ui |
公共屬性spa |
|
Height 設計 |
獲取此Image對象的高度。指針 |
RawFormat orm |
獲取此Image對象的格式。對象 |
Size |
獲取此Image對象的寬度和高度。 |
Width |
獲取此Image對象的寬度。 |
公共方法 |
|
GetPixel |
獲取此Bitmap中指定像素的顏色。 |
MakeTransparent |
使默認的透明顏色對此Bitmap透明。 |
RotateFlip |
旋轉、翻轉或者同事旋轉和翻轉Image對象。 |
Save |
將Image對象以指定的格式保存到指定的Stream對象。 |
SetPixel |
設置Bitmap對象中指定像素的顏色。 |
SetPropertyItem |
將指定的屬性項設置爲指定的值。 |
SetResolution |
設置此Bitmap的分辨率。 |
構造BitMap實例:
public Bitmap(Image ); //從現有圖像建立,其中可換成等效參數 public Bitmap(int, int); public Bitmap(Image, bool );//bool:顏色校訂標誌位 public Bitmap(Type , string );//type提取資源的類, string 資源名 public Bitmap(int , int , PixelFormat );// PixelFormat像素格式 枚舉 public Bitmap(int , int , Graphics);// Graphics設置分辨率 public Bitmap(int , int , int stride, PixelFormat , IntPtr );//stride 指定相鄰掃描行開始處之間字節偏移量的整數。傳遞給此參數的值必須爲4 的倍數。IntPtr指向包含像素數據的字節數組的指針。 |
PixelFormat枚舉:
名稱 |
說明 |
DontCare = 0 |
沒有指定像素格式 |
Undefined = 0 |
未定義像素格式 |
Max = 15 |
此枚舉的最大值 |
Indexed = 65536 |
該像素數據包含顏色索引值,這意味着這些值是系統顏色表中顏色的索引,而不是單個顏色值。 |
Gdi = 131072 |
像素數據包含 GDI 顏色 |
Format16bppRgb555 = 135173 |
指定格式爲每像素 16 位;紅色、綠色和藍色份量各使用 5 位。剩餘的 1 位未使用 |
Format16bppRgb565 = 135174 |
指定格式爲每像素 16 位;紅色份量使用 5 位,綠色份量使用 6 位,藍色份量使用 5 位 |
Format24bppRgb = 137224 |
指定格式爲每像素 24 位;紅色、綠色和藍色份量各使用 8 位 |
Format32bppRgb = 139273 |
指定格式爲每像素 32 位;紅色、綠色和藍色份量各使用 8 位。剩餘的 8 位未使用 |
Format1bppIndexed = 196865 |
指定像素格式爲每像素 1 位,並指定它使用索引顏色。所以顏色表中有兩種顏色 |
Format4bppIndexed = 197634 |
指定格式爲每像素 4 位並且已建立索引 |
Format8bppIndexed = 198659 |
指定格式爲每像素 8 位並且已建立索引。所以顏色表中有 256 種顏色 |
Alpha = 262144 |
像素數據包含沒有進行過自左乘的 alpha 值 |
Format16bppArgb1555 = 397319 |
像素格式爲每像素 16 位。該顏色信息指定 32,768 種色調,其中 5 位爲紅色,5 位爲綠色,5 位爲藍色,1 位爲 alpha |
PAlpha = 524288 |
像素格式包含自左乘的 alpha 值 |
Format32bppPArgb = 925707 |
指定格式爲每像素 32 位;alpha、紅色、綠色和藍色份量各使用 8 位。根據 alpha 份量,對紅色、綠色和藍色份量進行自左乘 |
Extended = 1048576 |
保留 |
Format16bppGrayScale = 1052676 |
像素格式爲每像素 16 位。該顏色信息指定 65536 種灰色調 |
Format48bppRgb = 1060876 |
指定格式爲每像素 48 位;紅色、綠色和藍色份量各使用 16 位 |
Format64bppPArgb = 1851406 |
指定格式爲每像素 64 位;alpha、紅色、綠色和藍色份量各使用 16 位。根據 alpha 份量,對紅色、綠色和藍色份量進行自左乘 |
Canonical = 2097152 |
默認像素格式,每像素 32 位。此格式指定 24 位顏色深度和一個 8 位 alpha 通道 |
Format32bppArgb = 2498570 |
指定格式爲每像素 32 位;alpha、紅色、綠色和藍色份量各使用 8 位 |
Format64bppArgb = 3424269 |
指定格式爲每像素 64 位;alpha、紅色、綠色和藍色份量各使用 16 位 |
圖像的輸入:
程序中對話框輸入:(示例)
打開對話框:
OpenFileDialog ofdlg = newOpenFileDialog(); ofdlg.Filter = "BMP File(*.bmp)|*.bmp"; if (ofdlg.ShowDialog() == DialogResult.OK) { Bitmap image = newBitmap(ofdlg.FileName); } |
保存對話框:
string str; Bitmap box1 = newBitmap(pictureBox1.Image); SaveFileDialog sfdlg = newSaveFileDialog(); sfdlg.Filter = "bmp文件(*.BMP)|*.BMP|All File(*.*)|*.*"; sfdlg.ShowDialog(); str = sfdlg.FileName; box1.Save(str); |
關於OpenFileDialog與SaveFileDialog的用法,可參考msdn相關章節。
圖像格式的轉換:
Bitmap對象的Save方法中的第二個參數指定了圖像保存的格式。修改這個參數可對圖像格式進行轉換。
位圖支持的格式:Imaging.ImageFormat
名稱 |
說明 |
Bmp |
獲取位圖圖像格式(BMP)。 |
Emf |
獲取加強型Windows圖元文件圖像格式(EMF)。 |
Exif |
獲取可交換圖像文件(Exif)格式。 |
Gif |
獲取圖形交換格式(GIF)圖像格式。 |
Guid |
獲取表示此ImageForma 對象的Guid結構。 |
Icon |
獲取Windows圖標圖像格式。 |
Jpeg |
獲取聯合圖像專家組(JPEG)圖像格式。 |
MemoryBmp |
獲取內存位圖圖像格式。 |
Png |
獲取W3C可移植網絡圖形(PNG)圖像格式。 |
Tiff |
獲取標籤圖像文件格式(TIFF)圖像格式。 |
Wmf |
獲取Windows圖元文件(WMF)圖像格式。 |
圖像的拷貝與粘貼Clipboard:
經常使用方法:
名稱 |
說明 |
Clear |
從剪貼板中移除全部數據。 |
ContainsData |
指示剪貼板中是否存在指定格式的數據,或可轉換成此格式的數據。 |
ContainsImage |
指示剪貼板中是否存在 Bitmap 格式或可轉換成此格式的數據。 |
ContainsText |
已重載。指示剪貼板中是否存在文本數據。 |
GetData |
從剪貼板中檢索指定格式的數據。 |
GetDataObject |
檢索當前位於系統剪貼板中的數據。 |
GetFileDropList |
從剪貼板中檢索文件名的集合。 |
GetImage |
檢索剪貼板上的圖像。 |
GetText |
已重載。從剪貼板中檢索文本數據。 |
SetAudio |
已重載。將WaveAudio格式的數據添加到剪貼板中。 |
SetData |
將指定格式的數據添加到剪貼板中。 |
SetDataObject |
已重載。將數據置於系統剪貼板中。 |
SetImage |
將Bitmap格式的Image添加到剪貼板中。 |
SetText |
已重載。將文本數據添加到剪貼板中。 |
步驟:將數據置於剪貼板中。從剪貼板中檢索 數據。
能夠經過SetDataObject方法將數據置於剪貼板中,SetDataObject方法有如下三種形式的定義:
publicstaticvoid SetDataObject(object); publicstaticvoid SetDataObject(object, bool );//bool 程序退出時,是否保留在剪貼板中 publicstaticvoid SetDataObject(object, bool , int , int);//嘗試次數及兩次嘗試之間的毫秒數 |
publicstaticIDataObject GetDataObject(); |
圖像的顏色處理:
調整分辨率:所謂分辨率就是指畫面的解析度,由多少像素構成,數值越大,圖像也就越清晰。
算法說明:將n*n分辨率的圖像變換爲m*m分辨率方法是將源圖像分紅n/m*n/m的子圖像塊,而後將該n/m*n/m子圖像塊的全部像素的顏色按F(i,j)的顏色值進行設定,達到下降分辨率的目的。
調整色彩:
灰化:算法說明:將彩色圖像像素的顏色值分解爲三基色R、G、B,求其和的平均值,而後使用SetPixel方法以該平均值參數生成圖像。
灰度圖像處理:根據特定的輸入輸出灰度轉換關係,加強了圖像灰度,處理後圖像的中等灰度值增大,圖像變亮。
顏色名 |
R值 |
G值 |
B值 |
紅 |
255 |
0 |
0 |
藍 |
0 |
0 |
255 |
綠 |
0 |
255 |
0 |
白 |
255 |
255 |
255 |
黃 |
255 |
255 |
0 |
黑 |
0 |
0 |
0 |
青 |
0 |
255 |
255 |
品紅 |
255 |
0 |
255 |
顏色表:(RGB)