首页 > 代码库 > Silverlight中图片显示

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));

就可以显示出正确的图片。