11.C# 影象處理
阿新 • • 發佈:2020-07-27
1 #region 程式集 System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 2 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Drawing.dll 3 #endregion 4 5 using System.ComponentModel; 6 using System.Drawing.Design; 7 using System.Drawing.Imaging;View Code8 using System.IO; 9 using System.Runtime.InteropServices; 10 using System.Runtime.Serialization; 11 12 namespace System.Drawing 13 { 14 // 15 // 摘要: 16 // 為源自 System.Drawing.Bitmap 和 System.Drawing.Imaging.Metafile 的類提供功能的抽象基類。 17 [ComVisible(true)] 18 [Editor("System.Drawing.Design.ImageEditor, System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))] 19 [ImmutableObject(true)] 20 [TypeConverter(typeof(ImageConverter))] 21 public abstract class Image : MarshalByRefObject, ISerializable, ICloneable, IDisposable 22 { 23 // 24 ~Image(); 25 26 // 27 // 摘要: 28 // 獲取該 System.Drawing.Image 的畫素資料的特性標誌。29 // 30 // 返回結果: 31 // 表示該 System.Drawing.Image 按位組合的 System.Drawing.Imaging.ImageFlags 的整數。 32 [Browsable(false)] 33 public int Flags { get; } 34 // 35 // 摘要: 36 // 獲取 GUID 的陣列,這些 GUID 表示此 System.Drawing.Image 中幀的維數。 37 // 38 // 返回結果: 39 // GUID 的陣列,這些 GUID 指定 System.Drawing.Image 中從最重要到最不重要的幀的維數。 40 [Browsable(false)] 41 public Guid[] FrameDimensionsList { get; } 42 // 43 // 摘要: 44 // 獲取此 System.Drawing.Image 的高度(以畫素為單位)。 45 // 46 // 返回結果: 47 // 此 System.Drawing.Image 的高度(以畫素為單位)。 48 [Browsable(false)] 49 [DefaultValue(false)] 50 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 51 public int Height { get; } 52 // 53 // 摘要: 54 // 獲取此 System.Drawing.Image 的水平解析度(以“畫素/英寸”為單位)。 55 // 56 // 返回結果: 57 // 此 System.Drawing.Image 的水平解析度(以“畫素/英寸”為單位)。 58 public float HorizontalResolution { get; } 59 // 60 // 摘要: 61 // 獲取或設定用於此 System.Drawing.Image 的調色盤。 62 // 63 // 返回結果: 64 // System.Drawing.Imaging.ColorPalette,表示用於此 System.Drawing.Image 的調色盤。 65 [Browsable(false)] 66 public ColorPalette Palette { get; set; } 67 // 68 // 摘要: 69 // 獲取此影象的寬度和高度。 70 // 71 // 返回結果: 72 // System.Drawing.SizeF 結構,表示此 System.Drawing.Image 的寬度和高度。 73 public SizeF PhysicalDimension { get; } 74 // 75 // 摘要: 76 // 獲取此 System.Drawing.Image 的畫素格式。 77 // 78 // 返回結果: 79 // System.Drawing.Imaging.PixelFormat,表示此 System.Drawing.Image 的畫素格式。 80 public PixelFormat PixelFormat { get; } 81 // 82 // 摘要: 83 // 獲取儲存於該 System.Drawing.Image 中的屬性項的 ID。 84 // 85 // 返回結果: 86 // 由屬性 ID 組成的一個數組,此影象中儲存的所有屬性項各有一個 ID。 87 [Browsable(false)] 88 public int[] PropertyIdList { get; } 89 // 90 // 摘要: 91 // 獲取儲存於該 System.Drawing.Image 中的所有屬性項(元資料片)。 92 // 93 // 返回結果: 94 // 由 System.Drawing.Imaging.PropertyItem 物件組成的一個數組,這些物件分別對應於此影象中儲存的每個屬性項。 95 [Browsable(false)] 96 public PropertyItem[] PropertyItems { get; } 97 // 98 // 摘要: 99 // 獲取此 System.Drawing.Image 的檔案格式。 100 // 101 // 返回結果: 102 // System.Drawing.Imaging.ImageFormat,表示此 System.Drawing.Image 的檔案格式。 103 public ImageFormat RawFormat { get; } 104 // 105 // 摘要: 106 // 獲取此影象的以畫素為單位的寬度和高度。 107 // 108 // 返回結果: 109 // System.Drawing.Size 結構,表示此影象的寬度和高度(以畫素為單位)。 110 public Size Size { get; } 111 // 112 // 摘要: 113 // 獲取或設定提供有關影象附加資料的物件。 114 // 115 // 返回結果: 116 // 提供有關影象附加資料的 System.Object。 117 [Bindable(true)] 118 [DefaultValue(null)] 119 [Localizable(false)] 120 [TypeConverter(typeof(StringConverter))] 121 public object Tag { get; set; } 122 // 123 // 摘要: 124 // 獲取此 System.Drawing.Image 的垂直解析度(以“畫素/英寸”為單位)。 125 // 126 // 返回結果: 127 // 此 System.Drawing.Image 的垂直解析度(以“畫素/英寸”為單位)。 128 public float VerticalResolution { get; } 129 // 130 // 摘要: 131 // 獲取此 System.Drawing.Image 的寬度(以畫素為單位)。 132 // 133 // 返回結果: 134 // 此 System.Drawing.Image 的寬度(以畫素為單位)。 135 [Browsable(false)] 136 [DefaultValue(false)] 137 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 138 public int Width { get; } 139 140 // 141 // 摘要: 142 // 從指定的檔案建立 System.Drawing.Image。 143 // 144 // 引數: 145 // filename: 146 // 字串,包含要從中建立 System.Drawing.Image 的檔案的名稱。 147 // 148 // 返回結果: 149 // 此方法建立的 System.Drawing.Image。 150 // 151 // 異常: 152 // T:System.OutOfMemoryException: 153 // 該檔案沒有有效的影象格式。 - 或 - GDI+ 不支援檔案的畫素格式。 154 // 155 // T:System.IO.FileNotFoundException: 156 // 指定的檔案不存在。 157 // 158 // T:System.ArgumentException: 159 // filename 為 System.Uri。 160 public static Image FromFile(string filename); 161 // 162 // 摘要: 163 // 使用該檔案中的嵌入顏色管理資訊,從指定的檔案建立 System.Drawing.Image。 164 // 165 // 引數: 166 // filename: 167 // 字串,包含要從中建立 System.Drawing.Image 的檔案的名稱。 168 // 169 // useEmbeddedColorManagement: 170 // 若要使用影象檔案中嵌入的顏色管理資訊,則設定為 true;否則設定為 false。 171 // 172 // 返回結果: 173 // 此方法建立的 System.Drawing.Image。 174 // 175 // 異常: 176 // T:System.OutOfMemoryException: 177 // 該檔案沒有有效的影象格式。 - 或 - GDI+ 不支援檔案的畫素格式。 178 // 179 // T:System.IO.FileNotFoundException: 180 // 指定的檔案不存在。 181 // 182 // T:System.ArgumentException: 183 // filename 為 System.Uri。 184 public static Image FromFile(string filename, bool useEmbeddedColorManagement); 185 // 186 // 摘要: 187 // 從 GDI 點陣圖的控制代碼建立 System.Drawing.Bitmap。 188 // 189 // 引數: 190 // hbitmap: 191 // 要從其建立 System.Drawing.Bitmap 的 GDI 點陣圖控制代碼。 192 // 193 // 返回結果: 194 // 此方法建立的 System.Drawing.Bitmap。 195 public static Bitmap FromHbitmap(IntPtr hbitmap); 196 // 197 // 摘要: 198 // 從 GDI 點陣圖的控制代碼和 GDI 調色盤的控制代碼建立 System.Drawing.Bitmap。 199 // 200 // 引數: 201 // hbitmap: 202 // 要從其建立 System.Drawing.Bitmap 的 GDI 點陣圖控制代碼。 203 // 204 // hpalette: 205 // 如果在 hBitmap 引數中指定的點陣圖不是與裝置無關的點陣圖 (DIB),則為用於定義點陣圖顏色的 GDI 調色盤的控制代碼。 206 // 207 // 返回結果: 208 // 此方法建立的 System.Drawing.Bitmap。 209 public static Bitmap FromHbitmap(IntPtr hbitmap, IntPtr hpalette); 210 // 211 // 摘要: 212 // 從指定的資料流建立 System.Drawing.Image。 213 // 214 // 引數: 215 // stream: 216 // 一個 System.IO.Stream,包含此 System.Drawing.Image 的資料。 217 // 218 // 返回結果: 219 // 此方法建立的 System.Drawing.Image。 220 // 221 // 異常: 222 // T:System.ArgumentException: 223 // 該流沒有有效的影象格式 - 或 - stream 為 null。 224 public static Image FromStream(Stream stream); 225 // 226 // 摘要: 227 // 可以選擇使用指定的資料流中嵌入的顏色管理資訊,從該資料流建立 System.Drawing.Image。 228 // 229 // 引數: 230 // stream: 231 // 一個 System.IO.Stream,包含此 System.Drawing.Image 的資料。 232 // 233 // useEmbeddedColorManagement: 234 // 若要使用該資料流中嵌入的顏色管理資訊,則設定為 true;否則設定為 false。 235 // 236 // 返回結果: 237 // 此方法建立的 System.Drawing.Image。 238 // 239 // 異常: 240 // T:System.ArgumentException: 241 // 該流沒有有效的影象格式 - 或 - stream 為 null。 242 public static Image FromStream(Stream stream, bool useEmbeddedColorManagement); 243 // 244 // 摘要: 245 // 可以選擇使用嵌入的顏色管理資訊並驗證影象資料來從指定的資料流建立 System.Drawing.Image。 246 // 247 // 引數: 248 // stream: 249 // 一個 System.IO.Stream,包含此 System.Drawing.Image 的資料。 250 // 251 // useEmbeddedColorManagement: 252 // 若要使用該資料流中嵌入的顏色管理資訊,則設定為 true;否則設定為 false。 253 // 254 // validateImageData: 255 // 若要驗證影象資料,則為 true;否則為 false。 256 // 257 // 返回結果: 258 // 此方法建立的 System.Drawing.Image。 259 // 260 // 異常: 261 // T:System.ArgumentException: 262 // 該流沒有有效的影象格式。 263 public static Image FromStream(Stream stream, bool useEmbeddedColorManagement, bool validateImageData); 264 // 265 // 摘要: 266 // 返回指定畫素格式的顏色深度(每個畫素的位數)。 267 // 268 // 引數: 269 // pixfmt: 270 // System.Drawing.Imaging.PixelFormat 的成員,指定要查詢其大小的格式。 271 // 272 // 返回結果: 273 // 指定的畫素格式的顏色深度。 274 public static int GetPixelFormatSize(PixelFormat pixfmt); 275 // 276 // 摘要: 277 // 返回一個值,該值指示此 System.Drawing.Image 的畫素格式是否包含 alpha 資訊。 278 // 279 // 引數: 280 // pixfmt: 281 // 要測試的 System.Drawing.Imaging.PixelFormat。 282 // 283 // 返回結果: 284 // 如果 pixfmt 包含 alpha 資訊,則為 true;否則為 false。 285 public static bool IsAlphaPixelFormat(PixelFormat pixfmt); 286 // 287 // 摘要: 288 // 返回一個值,該值指示該畫素格式是否為每個畫素 32 位。 289 // 290 // 引數: 291 // pixfmt: 292 // 要測試的 System.Drawing.Imaging.PixelFormat。 293 // 294 // 返回結果: 295 // 如果 pixfmt 規範,則為 true;否則為 false。 296 public static bool IsCanonicalPixelFormat(PixelFormat pixfmt); 297 // 298 // 摘要: 299 // 返回一個值,該值指示該畫素格式是否為每個畫素 64 位。 300 // 301 // 引數: 302 // pixfmt: 303 // 要測試的 System.Drawing.Imaging.PixelFormat 列舉。 304 // 305 // 返回結果: 306 // 如果 pixfmt 是擴充套件的,則為 true;否則為 false。 307 public static bool IsExtendedPixelFormat(PixelFormat pixfmt); 308 // 309 // 摘要: 310 // 建立此 System.Drawing.Image 的一個精確副本。 311 // 312 // 返回結果: 313 // 該方法建立的並強制轉換為物件的 System.Drawing.Image。 314 public object Clone(); 315 // 316 // 摘要: 317 // 釋放由此 System.Drawing.Image 佔用的所有資源。 318 public void Dispose(); 319 // 320 // 摘要: 321 // 以指定的單位獲取影象的界限。 322 // 323 // 引數: 324 // pageUnit: 325 // System.Drawing.GraphicsUnit 值之一,指示邊框的測量單位。 326 // 327 // 返回結果: 328 // System.Drawing.RectangleF,以指定的單位表示影象的界限。 329 public RectangleF GetBounds(ref GraphicsUnit pageUnit); 330 // 331 // 摘要: 332 // 返回有關指定的影象編碼器所支援的引數的資訊。 333 // 334 // 引數: 335 // encoder: 336 // 用於指定影象編碼器的 GUID。 337 // 338 // 返回結果: 339 // 一個 System.Drawing.Imaging.EncoderParameters,包含 System.Drawing.Imaging.EncoderParameter 340 // 物件的一個數組。 每個 System.Drawing.Imaging.EncoderParameter 都包含有關指定的影象編碼器所支援的某個引數的資訊。 341 public EncoderParameters GetEncoderParameterList(Guid encoder); 342 // 343 // 摘要: 344 // 返回指定維度的幀數。 345 // 346 // 引數: 347 // dimension: 348 // System.Drawing.Imaging.FrameDimension,它指定維度型別的標識。 349 // 350 // 返回結果: 351 // 指定維度中的幀數。 352 public int GetFrameCount(FrameDimension dimension); 353 // 354 // 摘要: 355 // 從該 System.Drawing.Image 獲取指定的屬性項。 356 // 357 // 引數: 358 // propid: 359 // 要獲取的屬性項的 ID。 360 // 361 // 返回結果: 362 // 此方法獲取的 System.Drawing.Imaging.PropertyItem。 363 // 364 // 異常: 365 // T:System.ArgumentException: 366 // 該影象的影象格式不支援屬性項。 367 public PropertyItem GetPropertyItem(int propid); 368 // 369 // 摘要: 370 // 返回此 System.Drawing.Image 的縮圖。 371 // 372 // 引數: 373 // thumbWidth: 374 // 請求的縮圖的寬度(以畫素為單位)。 375 // 376 // thumbHeight: 377 // 請求的縮圖的高度(以畫素為單位)。 378 // 379 // callback: 380 // 一個 System.Drawing.Image.GetThumbnailImageAbort 委託。 “注意” 必須建立一個委託並將對此委託的引用作為 callback 381 // 引數傳遞,但不使用此委託。 382 // 383 // callbackData: 384 // 必須為 System.IntPtr.Zero。 385 // 386 // 返回結果: 387 // 表示縮圖的 System.Drawing.Image。 388 public Image GetThumbnailImage(int thumbWidth, int thumbHeight, GetThumbnailImageAbort callback, IntPtr callbackData); 389 // 390 // 摘要: 391 // 從該 System.Drawing.Image 移除指定的屬性項。 392 // 393 // 引數: 394 // propid: 395 // 要移除的屬性項的 ID。 396 // 397 // 異常: 398 // T:System.ArgumentException: 399 // 該影象不包含請求的屬性項。 - 或 - 該影象的影象格式不支援屬性項。 400 public void RemovePropertyItem(int propid); 401 // 402 // 摘要: 403 // 旋轉、翻轉或者同時旋轉和翻轉 System.Drawing.Image。 404 // 405 // 引數: 406 // rotateFlipType: 407 // System.Drawing.RotateFlipType 成員,指定要應用於該影象的旋轉和翻轉的型別。 408 public void RotateFlip(RotateFlipType rotateFlipType); 409 // 410 // 摘要: 411 // 將該 System.Drawing.Image 儲存到指定的檔案或流。 412 // 413 // 引數: 414 // filename: 415 // 字串,包含要將此 System.Drawing.Image 儲存到的檔案的名稱。 416 // 417 // 異常: 418 // T:System.ArgumentNullException: 419 // filename 為 null. 420 // 421 // T:System.Runtime.InteropServices.ExternalException: 422 // 該影象以錯誤的影象格式儲存。 - 或 - 該影象被儲存到建立該影象的檔案。 423 public void Save(string filename); 424 // 425 // 摘要: 426 // 將此影象以指定的格式儲存到指定的流中。 427 // 428 // 引數: 429 // stream: 430 // 將在其中儲存影象的 System.IO.Stream。 431 // 432 // format: 433 // System.Drawing.Imaging.ImageFormat,指定儲存的影象的格式。 434 // 435 // 異常: 436 // T:System.ArgumentNullException: 437 // stream 或 format 為 null。 438 // 439 // T:System.Runtime.InteropServices.ExternalException: 440 // 該影象以錯誤的影象格式儲存 441 public void Save(Stream stream, ImageFormat format); 442 // 443 // 摘要: 444 // 將此 System.Drawing.Image 以指定格式儲存到指定檔案。 445 // 446 // 引數: 447 // filename: 448 // 字串,包含要將此 System.Drawing.Image 儲存到的檔案的名稱。 449 // 450 // format: 451 // 此 System.Drawing.Image 的 System.Drawing.Imaging.ImageFormat。 452 // 453 // 異常: 454 // T:System.ArgumentNullException: 455 // filename 或 format 為 null. 456 // 457 // T:System.Runtime.InteropServices.ExternalException: 458 // 該影象以錯誤的影象格式儲存。 - 或 - 該影象被儲存到建立該影象的檔案。 459 public void Save(string filename, ImageFormat format); 460 // 461 // 摘要: 462 // 使用指定的編碼器和影象編碼器引數,將該影象儲存到指定的流。 463 // 464 // 引數: 465 // stream: 466 // 將在其中儲存影象的 System.IO.Stream。 467 // 468 // encoder: 469 // 此 System.Drawing.Image 的 System.Drawing.Imaging.ImageCodecInfo。 470 // 471 // encoderParams: 472 // 一個 System.Drawing.Imaging.EncoderParameters,它指定影象編碼器使用的引數。 473 // 474 // 異常: 475 // T:System.ArgumentNullException: 476 // stream 為 null。 477 // 478 // T:System.Runtime.InteropServices.ExternalException: 479 // 該影象以錯誤的影象格式儲存。 480 public void Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams); 481 // 482 // 摘要: 483 // 使用指定的編碼器和影象編碼器引數,將該 System.Drawing.Image 儲存到指定的檔案。 484 // 485 // 引數: 486 // filename: 487 // 字串,包含要將此 System.Drawing.Image 儲存到的檔案的名稱。 488 // 489 // encoder: 490 // 此 System.Drawing.Image 的 System.Drawing.Imaging.ImageCodecInfo。 491 // 492 // encoderParams: 493 // 用於該 System.Drawing.Image 的 System.Drawing.Imaging.EncoderParameters。 494 // 495 // 異常: 496 // T:System.ArgumentNullException: 497 // filename 或 encoder 為 null. 498 // 499 // T:System.Runtime.InteropServices.ExternalException: 500 // 該影象以錯誤的影象格式儲存。 - 或 - 該影象被儲存到建立該影象的檔案。 501 public void Save(string filename, ImageCodecInfo encoder, EncoderParameters encoderParams); 502 // 503 // 摘要: 504 // 在上一 Overload:System.Drawing.Image.Save 方法呼叫所指定的檔案或流內新增一幀。 使用此方法將多幀影象中的選定幀儲存到另一個多幀影象。 505 // 506 // 引數: 507 // encoderParams: 508 // 一個 System.Drawing.Imaging.EncoderParameters,儲存由儲存-新增操作使用的影象編碼器所需的引數。 509 public void SaveAdd(EncoderParameters encoderParams); 510 // 511 // 摘要: 512 // 在上一 Overload:System.Drawing.Image.Save 方法呼叫所指定的檔案或流內新增一幀。 513 // 514 // 引數: 515 // image: 516 // 包含要新增的幀的 System.Drawing.Image。 517 // 518 // encoderParams: 519 // 一個 System.Drawing.Imaging.EncoderParameters,儲存由儲存-新增操作使用的影象編碼器所需的引數。 520 // 521 // 異常: 522 // T:System.ArgumentNullException: 523 // image 為 null。 524 public void SaveAdd(Image image, EncoderParameters encoderParams); 525 // 526 // 摘要: 527 // 選擇由維度和索引指定的幀。 528 // 529 // 引數: 530 // dimension: 531 // System.Drawing.Imaging.FrameDimension,它指定維度型別的標識。 532 // 533 // frameIndex: 534 // 活動幀的索引。 535 // 536 // 返回結果: 537 // 始終返回 0。 538 public int SelectActiveFrame(FrameDimension dimension, int frameIndex); 539 // 540 // 摘要: 541 // 在此 System.Drawing.Image 中儲存一個屬性項(元資料片)。 542 // 543 // 引數: 544 // propitem: 545 // 要儲存的 System.Drawing.Imaging.PropertyItem。 546 // 547 // 異常: 548 // T:System.ArgumentException: 549 // 該影象的影象格式不支援屬性項。 550 public void SetPropertyItem(PropertyItem propitem); 551 // 552 // 摘要: 553 // 釋放由 System.Drawing.Image 佔用的非託管資源,還可以另外再釋放託管資源。 554 // 555 // 引數: 556 // disposing: 557 // true 表示釋放託管資源和非託管資源;false 表示僅釋放非託管資源。 558 protected virtual void Dispose(bool disposing); 559 560 // 561 // 摘要: 562 // 提供一個回撥方法,用於確定 System.Drawing.Image.GetThumbnailImage(System.Int32,System.Int32,System.Drawing.Image.GetThumbnailImageAbort,System.IntPtr) 563 // 方法應在何時提前取消執行。 564 // 565 // 返回結果: 566 // 如果此方法確定 System.Drawing.Image.GetThumbnailImage(System.Int32,System.Int32,System.Drawing.Image.GetThumbnailImageAbort,System.IntPtr) 567 // 方法應提前停止執行,則它返回 true;否則返回 false。 568 public delegate bool GetThumbnailImageAbort(); 569 } 570 }