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をにロードできます。

 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 に答える