Silverlight中图片显示
silverlight中显示一个图片有很多的中方法,xaml中的image控件或者自定编写程序来生成image控件。
silverlight中显示的图片只能是Bitmap, JPG, PNG(64位颜色的或者灰色的PNG不支持). 请注意那个gif这个动画图片是不能使用的。
下面就一一的说说显示图片的方法。
(1) 我们拷贝一个图片到新建的silverlight程序集中,然后新建一个silverlight user control, 名为ImagePage.xaml。然后添加一个Image控件到Grid中,然后设置Source,Source="imag1.jpg" ,然后运行web程序就可以看到这个图片。
(2) 第一种方法中图片跟xaml文件是在同一个层次上的,但是正式项目中是用一个Image文件夹来存放所有到的图片的。这个时候,定义Images文件夹来存放图片文件,拷贝iamge2.jpg文件到Images文件夹中,然后Image 控件的Source,Source="Images/image2.jpg" ,然后运行web程序可以看到这个图片。
(3) 在上面的拷贝的图片文件,都是通过在xaml文件中添加控件设置Source来设置的。也可以通过程序来访问。程序如下:
1 public partial class ImagePage : UserControl 2 { 3 public ImagePage() 4 { 5 InitializeComponent(); 6 Image image = new Image(); 7 ImageSource imageSource=new BitmapImage(new Uri("image1.jpg",UriKind.RelativeOrAbsolute)); 8 image.Source = imageSource; 9 this.LayoutRoot.Children.Add(image); 10 } 11 }
请注意,那个UriKind这个枚举,一定要设置为RelativeOrAbsolute,设置为其他的Relative 或者是 Absolute 都是不行的。
(4) 点击image1.jpg这个图片,右击属性,然后我们修改属性Build Action=Content,然后我们调用的时候Source="/image1.jpg", 然后打开那个web程序也是可以看到效果的。
(5) 把那个image1.jpg文件放到web程序下的clientbin文件夹下,然后那个ImagePage.xaml文件中的Source="image1.jpg" 或者 Source="/image1.jpg"都是可以正确的访问到的。
(6) 当然也可以通过http://这个形式访问网络上的图片。
补充一种SteamResourceInfo的方法。
具体的见代码如下:
首先放置一张图片到silverlight项目的根目录下:
然后在mainpage.xaml 的构造函数中写入代码:
StreamResourceInfo sri = Application.GetResourceStream(new Uri("SilverlightApplication3;component/m.jpg", UriKind.Relative));
1 BitmapImage bi = new BitmapImage(); 2 bi.SetSource(sri.Stream); 3 img1.Source = bi;
img1是Image控件。
当然图片放在项目的根目录下,不太方便管理。可以在Silverlight项目新建Images文件夹专门存放图片,然后把m.jpg放到Images文件夹中,然后
StreamResourceInfo sri = Application.GetResourceStream(new Uri("SilverlightApplication3;component/Images/m.jpg", UriKind.Relative));
就可以显示出正确的图片。