BitmapFrame 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示解碼器所傳回和編碼器所接受的影像資料。
public ref class BitmapFrame abstract : System::Windows::Media::Imaging::BitmapSource, System::Windows::Markup::IUriContext
public abstract class BitmapFrame : System.Windows.Media.Imaging.BitmapSource, System.Windows.Markup.IUriContext
type BitmapFrame = class
inherit BitmapSource
interface IUriContext
Public MustInherit Class BitmapFrame
Inherits BitmapSource
Implements IUriContext
- 繼承
- 實作
範例
下列程式碼範例示範如何使用 建立新的 BitmapSourceBitmapFrame 。
int width = 128;
int height = width;
int stride = width/8;
byte[] pixels = new byte[height*stride];
// Try creating a new image with a custom palette.
List<System.Windows.Media.Color> colors = new List<System.Windows.Media.Color>();
colors.Add(System.Windows.Media.Colors.Red);
colors.Add(System.Windows.Media.Colors.Blue);
colors.Add(System.Windows.Media.Colors.Green);
BitmapPalette myPalette = new BitmapPalette(colors);
// Creates a new empty image with the pre-defined palette
BitmapSource image = BitmapSource.Create(
width,
height,
96,
96,
PixelFormats.Indexed1,
myPalette,
pixels,
stride);
FileStream stream = new FileStream("empty.tif", FileMode.Create);
TiffBitmapEncoder encoder = new TiffBitmapEncoder();
TextBlock myTextBlock = new TextBlock();
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString();
encoder.Frames.Add(BitmapFrame.Create(image));
MessageBox.Show(myPalette.Colors.Count.ToString());
encoder.Save(stream);
Dim width As Integer = 128
Dim height As Integer = width
Dim stride As Integer = CType(width / 8, Integer)
Dim pixels(height * stride) As Byte
' Try creating a new image with a custom palette.
Dim colors As New List(Of System.Windows.Media.Color)()
colors.Add(System.Windows.Media.Colors.Red)
colors.Add(System.Windows.Media.Colors.Blue)
colors.Add(System.Windows.Media.Colors.Green)
Dim myPalette As New BitmapPalette(colors)
' Creates a new empty image with the pre-defined palette
Dim image As BitmapSource = System.Windows.Media.Imaging.BitmapSource.Create(width, height, 96, 96, PixelFormats.Indexed1, myPalette, pixels, stride)
Dim stream As New FileStream("empty.tif", FileMode.Create)
Dim encoder As New TiffBitmapEncoder()
Dim myTextBlock As New TextBlock()
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString()
encoder.Frames.Add(BitmapFrame.Create(image))
MessageBox.Show(myPalette.Colors.Count.ToString())
encoder.Save(stream)
下列程式碼範例示範如何使用 BitmapFrame 物件開啟可攜式網狀圖形 (PNG) 圖形,並使用 CreateInPlaceBitmapMetadataWriter 方法撰寫中繼資料。
Stream^ pngStream = gcnew FileStream("smiley.png", FileMode::Open, FileAccess::ReadWrite, FileShare::ReadWrite);
PngBitmapDecoder^ pngDecoder = gcnew PngBitmapDecoder(pngStream, BitmapCreateOptions::PreservePixelFormat, BitmapCacheOption::Default);
BitmapFrame^ pngFrame = pngDecoder->Frames[0];
InPlaceBitmapMetadataWriter^ pngInplace = pngFrame->CreateInPlaceBitmapMetadataWriter();
if (pngInplace->TrySave() == true)
{
pngInplace->SetQuery("/Text/Description", "Have a nice day.");
}
pngStream->Close();
Stream pngStream = new System.IO.FileStream("smiley.png", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
PngBitmapDecoder pngDecoder = new PngBitmapDecoder(pngStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapFrame pngFrame = pngDecoder.Frames[0];
InPlaceBitmapMetadataWriter pngInplace = pngFrame.CreateInPlaceBitmapMetadataWriter();
if (pngInplace.TrySave() == true)
{ pngInplace.SetQuery("/Text/Description", "Have a nice day."); }
pngStream.Close();
Dim pngStream As New System.IO.FileStream("smiley.png", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
Dim pngDecoder As New PngBitmapDecoder(pngStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default)
Dim pngFrame As BitmapFrame = pngDecoder.Frames(0)
Dim pngInplace As InPlaceBitmapMetadataWriter = pngFrame.CreateInPlaceBitmapMetadataWriter()
If pngInplace.TrySave() = True Then
pngInplace.SetQuery("/Text/Description", "Have a nice day.")
End If
pngStream.Close()
備註
BitmapFrame藉由提供 Thumbnail 與影像特定畫面格相關聯的 存取,提供未定義 BitmapSource 的額外功能。 BitmapFrame 也支援使用 Metadata 屬性或 CreateInPlaceBitmapMetadataWriter 方法寫入中繼資料資訊。
從解碼器傳回的任何 BitmapFrame 一律會凍結。 如果您需要可修改的複本,您必須先使用 Clone 方法來建立 的 BitmapFrame 複本。
只有標記的影像檔案格式 (TIFF) 和圖形交換格式 (GIF) 格式影像支援多個畫面。
建構函式
BitmapFrame() |
初始化 BitmapFrame 類別的新執行個體。 |
屬性
BaseUri |
在衍生類別中進行覆寫時,會取得或設定值,這個值表示目前內容的基底 Uri。 |
CanFreeze |
取得值,指出是否可以將物件設為不可修改。 (繼承來源 Freezable) |
ColorContexts |
在衍生類別中進行覆寫時,會取得與這個 ColorContext 相關聯之 BitmapFrame 物件的集合。 |
Decoder |
在衍生類別中進行覆寫時,會取得與這個 BitmapFrame 執行個體相關聯的解碼器。 |
DependencyObjectType |
DependencyObjectType取得包裝這個實例之 CLR 型別的 。 (繼承來源 DependencyObject) |
Dispatcher |
取得與這個 Dispatcher 關聯的 DispatcherObject。 (繼承來源 DispatcherObject) |
DpiX |
取得影像 (DPI) 的水準點。 (繼承來源 BitmapSource) |
DpiY |
取得影像 (DPI) 的垂直點。 (繼承來源 BitmapSource) |
Format |
取得點陣圖資料的原生 PixelFormat。 (繼承來源 BitmapSource) |
HasAnimatedProperties |
取得值,這個值表示是否有一個或多個 AnimationClock 物件與這個物件的任何一個相依性屬性相關聯。 (繼承來源 Animatable) |
Height |
取得裝置獨立單位中來源點陣圖的高度 (,每單位 1/96 英吋) 1/96 英吋。 (繼承來源 BitmapSource) |
IsDownloading |
取得值,這個值表示目前是否正在下載 BitmapSource 內容。 (繼承來源 BitmapSource) |
IsFrozen |
取得值,該值表示物件目前是否可修改。 (繼承來源 Freezable) |
IsSealed |
取得值,這個值表示此執行個體目前是否已密封 (唯讀)。 (繼承來源 DependencyObject) |
Metadata |
取得與這個點陣圖影像相關聯的中繼資料 (Metadata)。 (繼承來源 BitmapSource) |
Palette |
取得點陣圖的色板 (如果有指定的話)。 (繼承來源 BitmapSource) |
PixelHeight |
取得點陣圖的高度 (以像素為單位)。 (繼承來源 BitmapSource) |
PixelWidth |
取得點陣圖的寬度 (以像素為單位)。 (繼承來源 BitmapSource) |
Thumbnail |
在衍生類別中覆寫時,取得與這個 BitmapFrame 相關聯的縮圖影像。 |
Width |
取得點陣圖的寬度,以與裝置無關的單位 (每單位 1/96 英吋) 。 (繼承來源 BitmapSource) |
方法
事件
Changed |
發生於 Freezable 或所含的物件遭到修改時。 (繼承來源 Freezable) |
DecodeFailed |
當影像因影像標頭損毀而無法載入時發生。 (繼承來源 BitmapSource) |
DownloadCompleted |
點陣圖內容下載完成時發生。 (繼承來源 BitmapSource) |
DownloadFailed |
無法下載點陣圖內容時發生。 (繼承來源 BitmapSource) |
DownloadProgress |
點陣圖內容的下載進度變更時發生。 (繼承來源 BitmapSource) |
明確介面實作
IFormattable.ToString(String, IFormatProvider) |
使用指定的格式,格式化目前執行個體的值。 (繼承來源 ImageSource) |