3

私は C# プロジェクトに取り組んでおり、相対パスを使用して Images ディレクトリから画像を取得する必要があります。私が試してみました

var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\Images\logo.png";
var logoImage = new LinkedResource(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)+@"\Images\logo.png")

しかし、これらには運がありません...プログラムの実行中に画像を出力ディレクトリにコピーするようにしましたが、それらの画像を取得しません。

4

4 に答える 4

9

C# で LinkedResource() を使用している場合、相対 URI またはファイルの場所を取得できない可能性が高くなります。

追加のコードを使用できます

var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
var logoimage = Path.Combine(outPutDirectory, "Images\\logo.png");
string relLogo = new Uri(logoimage).LocalPath;
var logoImage = new LinkedResource(relLogo)

これで、相対パスが取得され、これがメモリ内の絶対パスに変換され、画像を取得するのに役立ちます。

于 2013-03-29T06:02:30.697 に答える
1

Images ディレクトリが出力フォルダーにあることを確認します。私は通常Assembly.GetExecutingAssembly().Location、dllの場所を取得するために使用します。

ただし、画像の場合は、通常、プロジェクトの [プロパティ] ページの [リソース] ページ/コレクションを使用します。詳細については、こちらをご覧ください。プロジェクトのリソースに画像を配置すると、自動的に簡単にアクセスできるようになります。

GetExecutingAssembly の詳細については、MSDN ページを参照してください。

于 2013-03-29T03:50:57.753 に答える
0

まず、それらの画像ファイルをプロジェクトに追加します (画像フォルダーを作成することをお勧めします)。

次に、ソリューション マネージャーで画像を選択し、プロパティ ウィンドウを表示します。

次に、「出力フォルダーにコピー」を「常に」または「更新時にコピー」に変更します。

PS。私の IDE は Trad です。中国語なので、あなたの言語で正しいキーワードを保証することはできません.

于 2013-03-29T03:28:37.187 に答える
-3

アプリケーションを使用してフォルダー内の画像を表示したい場合は、配列を使用して、ur フォルダー内のすべての画像を配列に入れます。その後、前後に移動できます。

string[] _PicList = null;

int current = 0;

_PicList = System.IO.Directory.GetFiles("C:\\Documents and Settings\\Hasanka\\
                                               Desktop\\deaktop21052012\\UPEKA","*.jpg"); 
// "*.jpg" will select all 

//pictures in your folder


String str= _PicList[current];

DisplayPicture(str);

private void DisplayPicture(string str)

{
    //throw new NotImplementedException();
    BitmapImage bi = new BitmapImage(new Uri(str));
    imagePicutre.Source = bi; // im using Image in WPF 
    //if u r using windows form application it must be a PictureBox i think.

    label1.Content = str;

}
于 2013-03-29T03:54:36.113 に答える