- Mitglied seit
- 6 Nov 2007
- Beiträge
- 72
- Punkte für Reaktionen
- 0
- Punkte
- 0
Hallo miteinander,
hier jetzt eher etwas allgemeines : Das laden von Grafiken
Auf der Box und mit dem dort installierten .NET läuft es etwas anders ab, als im normalen Windowsbetrieb. Einige Funktionen sind dort schlichtweg nicht vorhanden, daher hier eine genaue Beschreibung.
Für Grafiken werden 2 zusätzliche Libarys benötigt :
Wie man ein Steuerelement auf der Form plaziert, haben wir im zugehörigen HowTo gesehen. Wie läd man nun Grafiken rein?
externe Grafik laden
Eine externe Grafik ist eine wacklige Geschichte und sollte doppelt und dreifach abgesichert werden. Bitte beachtet auch, das Pfadangaben relativ und absolut sein können. Bei der Thomsonbox fängt der Pfad mit einem \ an. Da Pfadangaben stets als String übergeben werden und \ in der Regel ein Steuerzeichen beschreibt, muss man anstelle von \ eben \\ verwenden und anstatt \\ (für Netzwerkangaben) \\\\.
Ich verwende folgende Grafik : \temp\tollesbild.jpg
Folgender Code ist mindestens nötig :
PictureBox pb = new PictureBox();
this.Controls.Add(pb);
pb.BringToFront();
pb.Image = new Bitmap("\\temp\\tollesbild.jpg");
Besser wäre jedoch noch eine Abfrage, ob die Datei existiert :
Da jedoch gerade bei wackeligen Netzwerkverbindungen, instabilen NAS-Storage-Chipsätzen usw. auch mal Lesefehler auftreten, sollte man es noch in einen try/catch Block zwängen. Kurzinfo : Mit try-catch kann man ein Codesegment "versuchen" und im Zweifelsfall die Fehler in der Laufzeit "abfangen" (deshalb try/catch), ohne dass das Programm abstürzt.
Hier der perfekte Code :
interne Ressource als Grafik laden
Das ist natürlich um Welten einfacher. Erstens kann kein dummer Benutzer die Grafik "aus Versehen" löschen und zweitens sollten eigentlich keine Lesefehler auftreten. Falls doch ist es sowieso zu spät.
Zuerst fügen wir die Grafik als Ressource hinzu. Das geht umständlich über Projekt->Vorhandenes Element hinzufügen... ->Bild Datei auswählen oder viel einfacher, indem ihr die Grafik einfach in euren Projektordner zieht. Dort könnt ihr selbstverständlich auch Unterordner anlegen. Hier mal ein Bildchen :
Den Code kann ich leider selbst nicht ganz erklären, aber so gehts :
bzw.
wobei "test" eurem aktuellen Namespace entspricht, i.d.R. eurem Projektnamen!
Ich hoffe, ich konnts einigermaßen erklären. Viel Spaß!
hier jetzt eher etwas allgemeines : Das laden von Grafiken
Auf der Box und mit dem dort installierten .NET läuft es etwas anders ab, als im normalen Windowsbetrieb. Einige Funktionen sind dort schlichtweg nicht vorhanden, daher hier eine genaue Beschreibung.
Für Grafiken werden 2 zusätzliche Libarys benötigt :
Code:
using System.Drawing;
using System.IO;
Wie man ein Steuerelement auf der Form plaziert, haben wir im zugehörigen HowTo gesehen. Wie läd man nun Grafiken rein?
externe Grafik laden
Eine externe Grafik ist eine wacklige Geschichte und sollte doppelt und dreifach abgesichert werden. Bitte beachtet auch, das Pfadangaben relativ und absolut sein können. Bei der Thomsonbox fängt der Pfad mit einem \ an. Da Pfadangaben stets als String übergeben werden und \ in der Regel ein Steuerzeichen beschreibt, muss man anstelle von \ eben \\ verwenden und anstatt \\ (für Netzwerkangaben) \\\\.
Ich verwende folgende Grafik : \temp\tollesbild.jpg
Folgender Code ist mindestens nötig :
PictureBox pb = new PictureBox();
this.Controls.Add(pb);
pb.BringToFront();
pb.Image = new Bitmap("\\temp\\tollesbild.jpg");
Besser wäre jedoch noch eine Abfrage, ob die Datei existiert :
Code:
PictureBox pb = new PictureBox();
this.Controls.Add(pb);
pb.BringToFront();
String image = "\\temp\\tollesbild.jpg";
if (File.Exists(image))
{
MessageBox.Show("Datei wurde nicht gefunden");
}
else
{
pb.Image = new Bitmap(image);
}
Da jedoch gerade bei wackeligen Netzwerkverbindungen, instabilen NAS-Storage-Chipsätzen usw. auch mal Lesefehler auftreten, sollte man es noch in einen try/catch Block zwängen. Kurzinfo : Mit try-catch kann man ein Codesegment "versuchen" und im Zweifelsfall die Fehler in der Laufzeit "abfangen" (deshalb try/catch), ohne dass das Programm abstürzt.
Hier der perfekte Code :
Code:
PictureBox pb = new PictureBox();
this.Controls.Add(pb);
pb.BringToFront();
String image = "\\temp\\tollesbild.jpg";
if (!File.Exists(image))
{
MessageBox.Show("Datei wurde nicht gefunden");
}
else
{
try
{
pb.Image = new Bitmap(image);
}
catch (Exception ex)
{
MessageBox.Show("Beim Laden der Datei ist folgender Fehler aufgetreten : \n\n" + ex.Message);
}
}
interne Ressource als Grafik laden
Das ist natürlich um Welten einfacher. Erstens kann kein dummer Benutzer die Grafik "aus Versehen" löschen und zweitens sollten eigentlich keine Lesefehler auftreten. Falls doch ist es sowieso zu spät.
Zuerst fügen wir die Grafik als Ressource hinzu. Das geht umständlich über Projekt->Vorhandenes Element hinzufügen... ->Bild Datei auswählen oder viel einfacher, indem ihr die Grafik einfach in euren Projektordner zieht. Dort könnt ihr selbstverständlich auch Unterordner anlegen. Hier mal ein Bildchen :
Den Code kann ich leider selbst nicht ganz erklären, aber so gehts :
Code:
pb.Image = new Bitmap(this.GetType().Assembly.GetManifestResourceStream("test.testbild.jpg"));
bzw.
Code:
pb.Image = new Bitmap(this.GetType().Assembly.GetManifestResourceStream("test.images.toller_bg.jpg"));
wobei "test" eurem aktuellen Namespace entspricht, i.d.R. eurem Projektnamen!
Ich hoffe, ich konnts einigermaßen erklären. Viel Spaß!
Zuletzt bearbeitet: