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
- 继承
- 实现
示例
下面的代码示例演示如何使用 BitmapFrame创建新的 BitmapSource 。
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 英寸)。 (继承自 BitmapSource) |
IsDownloading |
获取一个值,该值指示 BitmapSource 内容当前是否正在下载。 (继承自 BitmapSource) |
IsFrozen |
获取一个值,该值指示对象当前是否可修改。 (继承自 Freezable) |
IsSealed |
获取一个值,该值指示此实例当前是否为密封的(只读)。 (继承自 DependencyObject) |
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) |