1

我需要在我的 silverlight 库中有一个图像并将其加载到位图中。我只想把它当作资源来引用,但不知道如何去做。我在这个库中根本没有任何 xaml,但我读到的内容似乎表明我需要用 xaml 来做。

这是我在示例解决方案中使用 imageLoaded 事件的方法。(你知道 silverlight 是多么喜欢异步的东西!)图像属性总是设置为资源/副本。

public partial class MainPage : UserControl
{
    WriteableBitmap myIcon = new WriteableBitmap(100, 100);

    public MainPage()
    {
        InitializeComponent();
        LoadImages();

    }

    public void LoadImages()
    {
        BitmapImage bmi = new BitmapImage();
        bmi.ImageOpened += ImagesLoaded;
        bmi.CreateOptions = BitmapCreateOptions.None;
        bmi.UriSource = new Uri(App.Current.Host.Source, "/ClientBin/HouseLogo.png");
    }


    public void ImagesLoaded(object sender, RoutedEventArgs e)
    {
        BitmapImage bm = (BitmapImage)sender;
        myIcon = new WriteableBitmap(bm);
    }

    private void btnPdf_Click(object sender, RoutedEventArgs e)
    {
        PDFdoc doc = new PDFdoc(32.0, 32.0, myIcon );
    }
}
4

1 回答 1

4

首先,您说这是一个 silverlight 库,因此“内容”图像没有用,您需要在此库项目中的图像上指定“资源”构建操作。因此,您需要访问图像资源的 URL 类似于“/YourLibraryNameDllName;component/Images/HouseLogo.png”。您的项目中有一个名为“Images”的文件夹,您可以在其中放置要从 dll 加载的这些 png。

有了它,您可以WriteableBitmap使用这段代码将 png 加载到没有异步模式的 a 中。

 StreamResourceInfo sri = Application.GetResourceStream(new Uri("/YourLibraryNameDllName;component/Images/HouseLogo.png", UriKind.Relative));
 BitmapSource source = new BitmapImage();
 source.SetSource(sri.Stream);

 WriteableBitmap myIcon = new WriteableBitmap(source);
于 2011-08-13T13:53:14.663 回答