この質問は以前に尋ねられ(そして答えられた)ことを理解しています。しかし、私にとっては解決策はありません。
以下は、パズルのすべての関連部分のスクリーンキャプチャです。
スクリーンキャプチャhttp://dinosaur-island.com/PlantPictureBoxScreenCap.jpg
ご覧のとおり、画像フォルダーにリソースとして読み込まれた植物のビットマップが多数あります。 「PlantPicture」という名前のピクチャーボックスを持つフォームがあります。文字列がありますが、私はそれが良いパスを持っていることを知っています(デバッガでチェックしたので):
PicPath = PicPath+".bmp";
スクリーンキャプチャhttp://dinosaur-island.com/PlantDebugger.jpg
読み込み、キャストなど、さまざまな方法を試しました。
パスは次のようなものでなければなりません:"Images\a.bmp"
。 (先頭のスラッシュがないことに注意してください。スラッシュはbackスラッシュです。)
その後:
pictureBox1.Image = Image.FromFile(@"Images\a.bmp");
私はそれを確かめるためにそれを試しました、そしてそれは動作します。これは、あなたが得た他の答えに加えて-「常にコピー」することです。
わかりました...最初に、プロジェクトに画像をインポートする必要があります
1)フォームデザインでピクチャボックスを選択します
2)PictureBoxタスクを開きます(PictureboxのEdgeで右に固定された小さな矢印です)
3)「画像を選択...」をクリックします
4)2番目のオプション「Project resource file:」を選択します(このオプションは、Properties.Resourcesにアクセスできる「Resources」というフォルダーを作成します)
5)インポートをクリックして、コンピューターから画像を選択します(画像と同じ名前の画像のコピーがステップ4で作成されたリソースフォルダーに送信されます)
6)[OK]をクリックします
これで画像がプロジェクトに追加され、Propertiesコマンドで使用できるようになりました。pictureboxから画像を変更する場合は、次のコードを入力してください。
pictureBox1.Image = Properties.Resources.myimage;
注:myimageは、リソースの後にドットを入力した後、イメージの名前を表します。オプションでは、インポートされたイメージファイルになります。
ファイルパスに依存します。私にとって、現在のディレクトリは[project]\bin\Debug
なので、親フォルダに2回移動する必要がありました。
Image image = Image.FromFile(@"..\..\Pictures\"+text+".png");
this.pictureBox1.Image = image;
現在のディレクトリを見つけるには、label2と呼ばれるダミーラベルを作成し、次のように記述します。
this.label2.Text = System.IO.Directory.GetCurrentDirectory();
[出力ディレクトリにコピー]を[常にコピー]または[新しい場合にコピー]に設定すると便利です。
PicPathは相対パスであり、画像の読み込み中にある時点で絶対パスに変換されます。ほとんどの場合、デバッグでPath.GetFullPath(PicPath)
を使用すると、指定した場所に画像がないことがわかります。
受け入れられた答えには大きな欠点があります!
PictureBoxがその方法で画像をロードした場合、PictureBoxは画像をlockロックするため、その画像に対して今後の操作を行おうとすると、別のアプリケーションで使用されているエラーメッセージイメージが表示されます!
これ VBでの記事の解決策
そしてこれはC#の実装です
FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read);
pictureBox1.Image = Image.FromStream(fs);
fs.Close();