Autor Beitrag
ElJarno
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 05.03.09 12:11 
Hi leute,

ich wollte in meinem Program ein lokales Bild in die PicturBox laden dies Klappt auch soweit. Mein Problem ist jedoch dass die Bilder in dem bin/debug Pfad vom Projekt liegen müsen
(D:\Documents and Settings\szmgyx.EMEA\My Documents\Visual Studio 2008\Projects\SchaltGatter\SchaltGatter\bin\Debug\Pictures\Buttons\blitz blau.png")

wenn ich diesen Code verwende

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
pb_eingang_a.Load("Pictures/Buttons/blitz blau.png");

oder so

Image img_a = Image.FromFile(Application.StartupPath + "\\Pictures\\Buttons\\blitz blau.png");
pb_eingang_a.Image = img_a;


Ich habe aber die Bilder eigentlich in diesem Pfad liegen:
(D:\Documents and Settings\szmgyx.EMEA\My Documents\Visual Studio 2008\Projects\SchaltGatter\Pictures\Buttons)

finde ich Persönlich übersichtlicher.
Also erstens gibt es nun eine Möglichkeit auf diesen Pfad zu verweisen ohne jetzt den kompletten Pfad eingeben zu müssen da ich das Projekt ja später auf einen Stick ziehe und somit der absolute Pfad nicht mehr stimmt.
Oder wie ist es generel speichert man normalerweise alle externen lokalen zuätzlichen Datein in den bin/debug pfad bzw. wie macht es C# wenn man das Bild in der PictureBox fest auswählt?

Vielen Dank jetzt schon mal.


mfg Jan
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 05.03.09 13:21 
Wenn die Bilder von extern nicht austauschbar sein müssen bzw. dürfen, so lege die Bilder am besten als Ressource (resources.resx) ab.
Wenn das Bild statisch ist (also während der Laufzeit nicht geändert wird), so kannst du es auch gleich mit dem Designer der Eigenschaft PictureBox.Image zuweisen (auch dann wird es intern als Resource abgelegt).

Solltest du dennoch die Bilder extern ablegen wollen, so mußt du bedenken, daß dein Deploy-Verzeichnis ja das Verzeichnis 'bin/Debug' ist, d.h. alle Pfade sollten relativ zu diesem sein (du willst ja schließlich nicht dein gesamtes Projekt-Verzeichnis auf dem USB-Stick ziehen müssen, um dein Programm zu starten).

Application.StartUpPath ist daher schon mal generell richtig. Sollten deine Bilder dennoch in übergeordneten Verzeichnisse liegen, so kannst du ja auch mit ".." navigieren, z.B. Path.Combine(Application.StartupPath, "..\\..\\..\\Pictures\\Buttons\\blitz blau.png").
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 05.03.09 13:47 
... und es gibt außerdem noch Environment.GetFolderPath mit SpecialFolder.CommonApplicationData, das vielleicht dem von Dir genannten Verzeichnis unter "Dokumente und Einstellungen" entspricht.

Gruß Jürgen
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 05.03.09 17:00 
user profile iconElJarno hat folgendes geschrieben Zum zitierten Posting springen:
Oder wie ist es generel speichert man normalerweise alle externen lokalen zuätzlichen Datein in den bin/debug pfad
Jain. Du speicherst sie im Projektordner und stellst dann "Copy to Output Directory" in den Eigenschaften der Datei jeweils auf "Copy alwas/if newer", damit sie in das richtige bin-Verzeichnis kopiert werden. Eine andere Lösung wären die angesprochenen Ressourcen-Dateien.

_________________
>λ=