2011-12-12 18 views
0

C#を使用してアプリケーションで特定の画像を表示する際に問題があります。私は場所を指定するImageクラスとソースを指定するBitmapImageを使用しています。 UriSourceは相対的なもので、名前を指定するだけです。一部の画像では機能しましたが、他の画像では画像が表示されません。私のイメージのインスタンスは35x35で、もう1つは100x100の大きな(ピクセル)です。C#アプリケーションでPNGとjpg画像が表示されない

これがなぜ起こっているのか、それを修正する方法は誰でも知っていますか?

ありがとうございました。画像ファイルの場所について

Image removeImage = new Image(); 
    removeImage.HorizontalAlignment = HorizontalAlignment.Left; 
      removeImage.VerticalAlignment = VerticalAlignment.Top; 
      removeImage.Margin = new Thickness(490, 10, 0, 0); 
      removeImage.Width = 35; 
      removeImage.Height = 35; 
      BitmapImage source = new BitmapImage(); 
      source.BeginInit(); 
      source.UriSource = new Uri("delete.png", UriKind.RelativeOrAbsolute); 
      source.EndInit(); 
      removeImage.Source = source; 
      removeImage.Stretch = Stretch.None; 
      removeImage.Visibility = Visibility.Visible; 
      removeImage.MouseDown += new MouseButtonEventHandler(removeImage_MouseDown); 
+0

あなたは、ファイルが実行時に存在しているかどうかを検出するために、追加的にASP.NET – BizApps

答えて

2

わからない: は、ここで私が使用したコードです。画像が現在のプロジェクトフォルダにある場合は、画像ファイルのプロパティーを「プロパティーウィンドウ」からCopy To Output Directory=Copy Alwaysに設定する必要があります。

+0

を使用している、あなたはまだ 'File.Exists(パス)'関数を使用することができます。参照:http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx – Raptor

+0

の.slnファイルとフォルダがあります。イメージファイルはbin、obj、およびPropertiesフォルダを含むフォルダ内にあります。そのコード行をもう少し説明してください。私が最初にインポートする必要があるものはありますか? – Nabou

+0

@Nibou - OK!私はあなたが画像ファイルのファイル名とパスを二重に確認しなければならないかもしれないと思います。可能な場合は、コードを投稿することができます(投稿を編集し、フラグメントコードを追加する)。 – adatapost

0

そのような問題を診断するために私が知っている最良の方法(コードの迅速なピアレビューがどこにもあなたを取得しないと仮定)、ProcessMonitorを使用することです:http://technet.microsoft.com/en-us/sysinternals/bb896645

あなたはすべてを監視するために、このツールを使用することができますあなたのマシン上のファイル活動(ノイズを制限するためにインクルード/除外フィルタを使用してください)。

それはあなたのアプリケーションが間違った場所(彼らはコピーされませんでした、または相対パスがオフになっているのいずれか)でそれらを探しているので、画像が表示されないという理由がある可能性が非常に高いです。

ProcessMonitorは、Windowsが.jpgにアクセスするすべての試み(失敗したかどうかに関係なく)を記録します。ログ内のファイル名を検索すると、おそらくエラーメッセージと、Windowsがファイルを開くために使用していた完全なパスが表示されます。私が見

最も一般的な結果はあなたが必要なパスと異なる実際に使用されていた

  1. パスしています。
  2. パスは正しくありましたが、ファイルが存在しませんでした(ビルド/コピー/インストールの問題)
  3. パスは正しくありましたが、Webアプリケーションにはファイルを読み取る権限がありませんでした。これらすべてのケースで

、ProcessMonitorは何が起こったのかを紹介します。

関連する問題