回答編集履歴
2
追記
test
CHANGED
@@ -23,3 +23,37 @@
|
|
23
23
|
**【案3】**
|
24
24
|
|
25
25
|
前の質問者さんのスレッドによるとデータは SQL Server より取得するとのことなので、画像のバイト列データ(画像の名前ではなくバイト列そのもの)を SQL Server に保存しておき、アプリではそれから取得する。
|
26
|
+
|
27
|
+
---
|
28
|
+
|
29
|
+
**【追記】**
|
30
|
+
|
31
|
+
> 私は特に案3か案2のどちらかの方法について知りたいですが、案3について詳しく説明をお願いします。
|
32
|
+
> 申し訳ないお願いと思いますが、もし、時間など可能であれば案2について説明もお願いしたいです。
|
33
|
+
|
34
|
+
【案2】のやり方のみ以下に説明します。【案3】はもともとのこのスレッドの話「相対パスみたいな画像ファイルを表示する方法」とは違うことなので、その話がしたいのであれば新たに別スレッドを立てて質問してください。
|
35
|
+
|
36
|
+
まず、ソリューションエクスプローラーで Form1.resx を右クリックして開き、[イメージ]を選んでそのウィンドウに画像を配置してください。エクスプローラーからコピペできます。
|
37
|
+
|
38
|
+
成功するとプロジェクトルート直下に Resources というフォルダができ、その中に画像ファイルがコピーされます。下の画像を見てください。
|
39
|
+
|
40
|
+

|
41
|
+
|
42
|
+
上の画像は ComponentResourceManager クラスを使って以下のコードで取得できます。
|
43
|
+
|
44
|
+
|
45
|
+
```C#
|
46
|
+
var resources = new ComponentResourceManager(typeof(Form1));
|
47
|
+
Image? image = resources.GetObject("sample1") as Image;
|
48
|
+
if (image != null)
|
49
|
+
{
|
50
|
+
pictureBox1.Image = image;
|
51
|
+
}
|
52
|
+
```
|
53
|
+
|
54
|
+
【案3】は新たに別スレッドを立てて質問してくださいと書きましたが、その前に、そもそも Windows Forms アプリで SQL Server を使うのが適切かを考えてください。
|
55
|
+
|
56
|
+
「他人のパソコン」にも SQL Server をインストールしてもらうなんてことは考えられないのでは? 複数のユーザーで SQL Server を共有できる環境を構築することも現実的ではないのでは?
|
57
|
+
|
58
|
+
そこはとりあえず置いといて話がしたいということでも、勉強して自力である程度コードが書けるようになってから、どうしても自力では解決できない点を質問するようにしてください。
|
59
|
+
|
1
【案x】を太字に変更
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
たぶん、「他人のパソコン」に画像ファイルがないというようなプリミティブな問題ではなく、画像ファイルは「他人」にも配布して「他人のパソコン」のどこかのフォルダに配置してもらったが、アプリで指定するファイルパスと、「他人」が画像ファイルを配置したファイルパスが違っていて、結果 System.IO.FileNotFoundException がスローされたのだろうと想像してレスします。
|
6
6
|
|
7
|
-
【案1】
|
7
|
+
**【案1】**
|
8
8
|
|
9
9
|
画像ファイルはそのアプリの exe のあるフォルダに配置してもらい、
|
10
10
|
|
@@ -14,12 +14,12 @@
|
|
14
14
|
|
15
15
|

|
16
16
|
|
17
|
-
【案2】
|
17
|
+
**【案2】**
|
18
18
|
|
19
19
|
画像はリソースファイルに格納してそこから取得する。
|
20
20
|
|
21
21
|

|
22
22
|
|
23
|
-
【案3】
|
23
|
+
**【案3】**
|
24
24
|
|
25
25
|
前の質問者さんのスレッドによるとデータは SQL Server より取得するとのことなので、画像のバイト列データ(画像の名前ではなくバイト列そのもの)を SQL Server に保存しておき、アプリではそれから取得する。
|