Richtig ist meist nicht der direkte Vergleich mit Color.Transparent, sondern die Alpha-Komponente zu prüfen: vb If bmp.GetPixel(x, y).A <> 0 Then ' Pixel ist nicht transparent End If...
Kann man in VB.NET 2003 Bilder in DLLs speichern und im aktuellen Projekt anzeigen?
Antwort vom**Ja – in VB.NET 2003 kannst du Bilder in einer DLL speichern und im aktuellen Projekt anzeigen. Der saubere Weg ist, die Bilder als eingebettete Ressourcen in die DLL aufzunehmen und sie zur Laufzeit daraus zu laden.** ## Was praktisch gemeint ist Eine DLL kann nicht nur Code enthalten, sondern auch Ressourcen wie Bitmaps, Icons oder Strings. Für dein Projekt bedeutet das: - Du kannst Bilder zentral in einer DLL ablegen. - Mehrere Programme können dieselben Bilder nutzen. - Änderungen an den Bildern erfordern meist nur eine neue DLL statt Änderungen an jedem Formular. ## Der wichtige Unterschied Entscheidend ist, **wie** die Bilder in der DLL liegen: 1. **Als eingebettete Ressource** - am zuverlässigsten - Bild ist direkt in der DLL enthalten - wird zur Laufzeit über den Assembly-Stream geladen 2. **Als normale Datei neben der DLL** - technisch möglich, aber dann ist das Bild nicht wirklich *in* der DLL - bringt kaum Vorteile gegenüber einem normalen Bilderordner Wenn du wirklich Bilder **in** der DLL speichern willst, sind **embedded resources** die richtige Lösung. ## So funktioniert es in VB.NET 2003 Du fügst das Bild in das DLL-Projekt ein und setzt die Build-Aktion auf eingebettete Ressource. Danach kannst du es im Hauptprojekt etwa so laden: ```vb Imports System.Reflection Imports System.IO Imports System.Drawing Dim asm As Assembly = GetType(IrgendeineKlasseAusDerDll).Assembly Dim stm As Stream = asm.GetManifestResourceStream("MeineDll.Bilder.logo.jpg") If Not stm Is Nothing Then Dim img As Image = Image.FromStream(stm) PictureBox1.Image = img End If ``` ## Worauf du achten musst Der Ressourcenname ist der häufigste Fehler. Er lautet meist nicht nur `logo.jpg`, sondern eher so etwas wie: ```vb MeineDll.Bilder.logo.jpg ``` Also: - Standard-Namespace der DLL - ggf. Ordnername - Dateiname mit Endung Wenn der Name nicht exakt stimmt, liefert `GetManifestResourceStream(...)` einfach `Nothing`. ## Praktischer Tipp Wenn du unsicher bist, wie der Ressourcenname genau lautet, kannst du dir alle eingebetteten Ressourcennamen ausgeben lassen: ```vb Dim asm As Assembly = GetType(IrgendeineKlasseAusDerDll).Assembly Dim names() As String = asm.GetManifestResourceNames() Dim s As String For Each s In names MessageBox.Show(s) Next ``` Das ist in alten .NET-Versionen oft der schnellste Weg zur Fehlersuche. ## Lohnt sich das **Ja, wenn du gemeinsame Bilder zentral verwalten willst.** **Nein, wenn Benutzer die Bilder später leicht austauschen sollen.** Denn eingebettete Bilder sind bequem für Verteilung und Konsistenz, aber unpraktisch, wenn man sie ohne Neukompilieren ändern möchte. ## Klare Empfehlung **Ja, das geht in VB.NET 2003 problemlos – und für feste Programmgrafiken ist eine Ressourcen-DLL deutlich besser als lose Bilddateien.** Wenn die Bilder aber vom Benutzer austauschbar sein sollen, ist ein externer Ordner die bessere Lösung.
Verwandte Fragen
Wirkt „Exit For“ in VB.NET 2003 bei geschachtelten Schleifen auf alle Schleifen oder nur auf die aktuelle?
Exit For beendet in VB.NET 2003 nur die aktuelle For-Schleife, nicht alle geschachtelten Schleifen. Wenn du aus mehreren Ebenen gleichzeitig raus willst, brauchst du zusätzliche Logik, z. B. ein...
Kann man in VB.NET 2003 vorübergehend alle Shortcuts deaktivieren und Tastenkombinationen wie Strg+A als String in eine TextBox einfügen?
Ja – aber nicht global für ganz Windows, sondern innerhalb deiner VB.NET-2003-Anwendung. Du musst die Tastenkombinationen selbst abfangen, Standard-Shortcuts unterdrücken und aus den g...
Wie lösche ich in VB.NET 2003 alle ausgewählten Einträge aus einer ListBox?
In VB.NET 2003 löschst du mehrere markierte ListBox-Einträge am sichersten rückwärts über SelectedIndices, weil sich die Indizes beim Entfernen sofort verschieben. vb Dim i A...
Bis zu welcher Version läuft VB.NET unter Windows XP?
Unter Windows XP läuft VB.NRT höchstens mit einer Version, die noch auf .NET Framework 4.0/4.0.3 basiert – neuere Builds mit höherem .NET-Unterbau laufen auf XP nicht mehr. Micros...
Kann ich in VB.NET 2003 Standard auch ohne die Option „Klassenbibliothek“ DLLs erstellen?
Ja – auch in VB.NET 2003 kannst du DLLs erstellen, selbst wenn im Dialog „Neues Projekt“ keine „Klassenbibliothek“ auswählbar ist. Entscheidend ist nicht der Projekt...
Wie lassen sich in VB.NET 2003 Änderungen an einer Originaldatei automatisch in mehreren Projekten aktualisieren?
Ja – aber nicht zuverlässig über „Kopien“ derselben Datei. Der saubere Weg ist, den gemeinsamen Code in eine zentrale Stelle auszulagern; nur dann wirken Änderungen au...
Was bedeutet: Bilder mit beschreibenden Alt-Attributen optimieren?
Gemeint ist: Das alt-Attribut eines Bildes soll den Bildinhalt so beschreiben, dass Menschen mit Screenreader und Suchmaschinen verstehen, was auf dem Bild zu sehen ist. Ein guter Alt-Text ersetzt das...
Wie markiert man in VB.NET 2003 in einer RichTextBox alle Vorkommen einer Zeichenkette?
In einer RichTextBox markierst du alle Vorkommen, indem du mit Find ab einer Startposition wiederholt suchst und jeden Treffer per Select + SelectionBackColor hervorhebst; eine eingebaute „Alle...
Wie sortiere ich in VB.NET 2003 ein Array mit 4 Spalten und x Zeilen nach Zeilen?
In VB.NET 2003 kannst du ein „2D-Array“ (Dim a(x,3)) nicht direkt nach Zeilen sortieren. Praktisch musst du immer ganze Zeilen gegeneinander tauschen – also z. B. per BubbleSort oder...