Image 元素:
Object
|------DependencyObject
| -----UIElement
|--------FrameworkElement
|---------Image
常见用法:<Image Source="Assets/Logo.png" />
其中image.Source是一个ImageSource类型:
Object
|----- DependencyObject
|----- ImageSource
|------BitmapSource
|-----BitmapImage
|-----WriteableBitmap
ImageSource包含(封装)了实际要显示的图片,但是它本身是个抽象类,不能被实例化,需要它的继承类来初始化。其中BitmapSource也是抽象类(抽象位图,以像素为单位来描述自身的宽和高,这样的信息都被编码在了位图文件中),不能初始化,但是它的PixelWidth和PixelHeight属性说明图片在加载成功后的大小.而它的SetSource(IRandomAccessStream streamSource)方法可以让你从文件或网络流中读取Bitmap数据。
BitmapImage继承了BitmapSource,并且还添加了支持URI的UriSource属性。它的构造函数也支持传递URI对象来实例化自己。
示例代码:
Uri uri = new Uri("http://www.charlespetzold.com/pw6/PetzoldJersey.jpg");
BitmapImage bitmap = new BitmapImage(uri);
Image image = new Image();
image.Source = bitmap;
contentGrid.Children.Add(image);
使用Http下载图片流进行初始化:
HttpClient httpClient = new HttpClient( new HttpClientHandler());
async Task<IRandomAccessStream> getImageStream(string url)
{
Stream stream=await httpClient.GetStreamAsync(url);
var randomAccessStream = new Windows.Storage.Streams.InMemoryRandomAccessStream();
awaitRandomAccessStream.CopyAsync(stream.AsInputStream(),randomAccessStream.GetOutputStreamAt(0));
stream.Dispose();
return randomAccessStream;
}
async void foo(Uri IconUri){
Image img = new Image();
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(await getImageStream(IconUri));
img.Source=bitmapImage;
img.MaxWidth = 60;
img.MaxHeight = 60;
img.Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill;
bitmapImage.ImageOpened+=(o,e)=>{//确保BitmapImage的宽高已经有值
int w = bitmapImage.PixelWidth > 60 ? 60 : bitmapImage.PixelWidth;
int h = bitmapImage.PixelHeight > 60 ? 60 : bitmapImage.PixelHeight;
}
}
Stretch属性的四个值:
None |
显示图片保持原始大小 |
Fill |
重新对图片设置大小来填充目标大小 |
Uniform |
按原图宽高比例就行缩放填充适应目标 |
UniformToFill |
按原图宽高比例进行缩放填充,但是可能因为不适合目标比例而被部分截断 |
DecodePixelHeight和Width属性:
若设置了BitmapImage的这两个值,那么将会加载指定大小的图片,即放弃原有图片的大小和高宽比例。否则加载的图片的高宽比将不变,然后根据Stretch进行缩放。
JPEG和PNG解码器解析图片到指定的大小。而其他的解码器则加载图片的原始大小,然后缩放到目标大小。
示例代码:
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
// Set the image source to the ed bitmap
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.DecodePixelHeight = decodePixelHeight;
bitmapImage.DecodePixelWidth = decodePixelWidth;
bitmapImage.SetSource(fileStream);
FooImage.Source = bitmapImage;
}
参考资料:the 6th edition of Programming Windows,Charles Petzold
分享到:
相关推荐
在.NET 5中,MahApps.Metro提供了一系列的控件和样式,这些控件包括但不限于按钮、文本框、滑块、进度条、提示对话框等,它们都带有丰富的动画效果和自定义选项。开发者可以通过简单的API调用或XML配置来改变控件的...
【标签】:“Metro asp.net”标签进一步强调了这个项目的核心特征,即结合了ASP.NET技术与Metro设计风格,这可能意味着源码包含了一些特定的控件或库,如 metro UI CSS 或 metro bootstrap,以实现与Windows 8 UI...
在.NET框架下,开发Windows应用程序时,为了提升用户体验和视觉效果,可以使用皮肤控件来实现界面的美化。本文将详细介绍如何在C# WinForm程序中应用皮肤控件,以及如何利用提供的60多种不同风格的皮肤进行界面设计...
在WPF项目中使用MahApps.Metro,首先需要添加对MahApps.Metro的NuGet包引用,然后在App.xaml文件中导入相应的资源字典,并设置应用程序的基本样式。例如: ```xml <Application x:Class="YourNamespace.App" xmlns=...
在本压缩包中,提供了三种不同的主题风格,分别为bootstrapStyle、zTreeStyle和metroStyle,旨在满足不同项目和用户界面的需求。 首先,我们来详细了解一下`bootstrapStyle`。Bootstrap是Twitter开发的一款开源前端...
在VB.NET中,我们可以选择使用无边框(BorderStyle = None)的Form,并且调整控件的边缘样式,使其看起来更加扁平。 3. **大图标和清晰文字**:为了适应触摸操作,控件和按钮的图标应该较大,文字清晰易读。可以...
本文将基于提供的"Win8 Metro Style App Automation Implement Source code",深入探讨如何封装DLL并进行 Metro 应用的自动化测试。 首先,我们需要理解“DLL”(动态链接库)的概念。DLL是一种共享库,它包含可由...
【Windows 8 Developer Preview Metro style app samples】 这个压缩包文件包含了一系列Windows 8开发者预览版的 Metro 风格应用示例。这些示例旨在帮助开发者理解和掌握如何在Windows 8平台上创建现代化、触控友好...
下面将详细介绍Windows 8 Metro Style使用XAML的关键技术和经验分享。 #### 1. XAML支持与控制模型 XAML在Windows 8 Metro Style应用中的使用非常广泛。它提供了一种统一的方式来描述用户界面和数据绑定逻辑。对于...
在描述中提到的“用vs.net WINFORM做Metro界面”,意味着开发者使用了VS.NET的工具和.NET Framework,通过编写代码实现了与Windows 8 Metro风格类似的用户界面。 【标签】:“DotNetBar” DotNetBar是Dev ...
**WPF_MahApps.Metro界面主题使用教程** 在Windows Presentation Foundation (WPF)开发中,创建美观、现代的用户界面是一项重要任务。MahApps.Metro是一个流行的开源库,它为WPF应用提供了Material Design和Metro...
综上所述,"metro ui style html JS"是一个关于使用HTML、CSS和JavaScript技术来构建具有Windows 8 Metro风格的现代、响应式网页和用户界面的过程。通过理解并应用这些技术,开发者能够创建出美观且功能强大的Web...
在这个项目中,开发者使用WPF来构建Metro风格的界面,包括布局管理、控件使用、样式和模板定制等。 3. **XAML(Extensible Application Markup Language)**:XAML是WPF界面设计的主要语言,它允许以声明式方式定义...
用于树形组件的样式设置,组织机构的样式设置!
MahApps.Metro是一款酷炫的Metro风格的WPF UI控件库。MahApps.Metro入门文档地址:http://mahapps.com/guides/quick-start.html 源码地址:https://github.com/MahApps/MahApps.Metro官网地址:http://mahapps.com/...
2. **色彩鲜明**:metro style icons通常使用鲜艳的颜色,每个颜色都有特定的意义,帮助用户快速识别不同的功能。 3. **几何形状**:基于简单的几何形状,如矩形、圆形、三角形等,使得图标易于理解和记忆。 4. **...
本示例程序集是针对Windows 8 Metro应用开发的一个教程资源,通过一系列的Demo,帮助开发者深入理解和掌握各种控件的使用。 首先,我们来看"Demo 1",这个示例通常会涵盖基本的UI元素,如按钮(Button)、文本框...
- **Win8 Alarms Clock**:这款闹钟应用不仅功能强大,其设计也完全符合Metro风格的要求,提供了美观且易于使用的界面,使设置闹钟成为一种享受。 总之,“Windows 8 Metro风格”不仅是一次设计语言的革新,更是...
**WPF Metro风格控件库** 是一个专为Windows Presentation Foundation (WPF) 应用程序设计的组件库,它提供了符合Windows 8 (WIN8) Metro风格的用户界面元素。这个控件库旨在帮助开发者创建具有现代感、简洁且响应...
此源码是基于.NET技术实现的,特别是采用了一种被称为“Metro风格”的设计美学,这源自Windows 8操作系统,以其简洁、现代和触摸友好的界面而闻名。 在.NET框架下,开发者可以使用C#、VB.NET或F#等语言编写代码。此...