Das von dir beschriebene Verhalten liegt nicht an `File.OpenRead`, sondern an der Art und Weise, wie das Bild in einem Steuerelement (z. B. `PictureBox`) angezeigt wird. In Windows Forms (auch in VB.N... [mehr]
Das von dir beschriebene Verhalten in VB.NET 2003, dass ein 1 px breites Bild nach dem Laden mit `Image.FromStream` plötzlich `img.Width = 15` ergibt, kann mehrere Ursachen haben. Hier sind die häufigsten Gründe: 1. **PNG-Metadaten oder DPI-Einstellungen** PNG-Bilder können DPI-Informationen (Dots Per Inch) enthalten. Die .NET GDI+ Bibliothek (System.Drawing) interpretiert diese DPI-Angaben manchmal falsch, besonders in älteren Versionen wie .NET 1.1 (Visual Studio 2003). Beispiel: Ein Bild mit 1 px Breite und 96 DPI kann bei einer fehlerhaften Interpretation als breiter angezeigt werden, weil GDI+ versucht, die physische Größe zu berücksichtigen. 2. **Defektes oder nicht unterstütztes PNG-Format** Manche PNGs, die mit bestimmten Tools erstellt wurden, enthalten ungewöhnliche Header oder Metadaten, die GDI+ nicht korrekt liest. Das kann dazu führen, dass die Bildgröße falsch ausgelesen wird. 3. **Stream-Handling** Wenn der Stream (`File.OpenRead`) nach dem Laden nicht korrekt geschlossen oder zurückgesetzt wird, kann es zu Problemen kommen. Allerdings ist das bei deinem Beispiel eher unwahrscheinlich, da `Image.FromStream` den Stream direkt liest. 4. **Fehler im .NET Framework 1.1** In .NET 1.1 (Visual Studio 2003) gab es einige Bugs im Umgang mit bestimmten Bildformaten, insbesondere PNG. Diese Bugs wurden in späteren Versionen behoben. **Was kannst du tun?** - Prüfe das Bild mit einem anderen Tool (z.B. IrfanView, GIMP), ob es wirklich 1 px breit ist. - Speichere das Bild ggf. neu ab, um fehlerhafte Metadaten zu entfernen. - Teste das Laden des Bildes in einer neueren .NET-Version, um zu sehen, ob das Problem weiterhin besteht. - Alternativ kannst du das Bild mit `Bitmap` statt `Image` laden, z.B.: ```vb.net Dim bmp As New Bitmap("bild.png") MsgBox(bmp.Width) ``` **Fazit:** Das Problem liegt sehr wahrscheinlich an der Art, wie GDI+ in .NET 1.1 PNG-Bilder und deren Metadaten interpretiert. In neueren .NET-Versionen tritt dieses Problem in der Regel nicht mehr auf. Weitere Infos: - [Microsoft: Image.FromStream Method](https://learn.microsoft.com/en-us/dotnet/api/system.drawing.image.fromstream) - [Stack Overflow: PNG width/height wrong in .NET](https://stackoverflow.com/questions/1162119/why-does-system-drawing-image-fromfile-return-the-wrong-width-and-height-for-png) Wenn du das Bild zur Verfügung stellst, kann man es genauer analysieren.
Das von dir beschriebene Verhalten liegt nicht an `File.OpenRead`, sondern an der Art und Weise, wie das Bild in einem Steuerelement (z. B. `PictureBox`) angezeigt wird. In Windows Forms (auch in VB.N... [mehr]
In VB.NET 2003 gibt es einen wichtigen Unterschied zwischen `Image.FromFile` und `File.OpenRead`: **1. `Image.FromFile`** - Gehört zur Klasse [`System.Drawing.Image`](https://learn.microsoft.c... [mehr]
In VB.NET 2003 (also Visual Basic .NET 1.1) gilt Folgendes: - Der Ausdruck `CInt(True)` ergibt **-1**. - Der Ausdruck `CInt(False)` ergibt **0**. Das liegt daran, dass in VB.NET (wie auch in klassis... [mehr]
In VB.NET 2003 gibt es keine direkte Möglichkeit, die Transparenzfarbe (TransparentColor) eines Icons zu ermitteln, das mit `SHGetFileInfo` extrahiert wurde, da das von `SHGetFileInfo` zurüc... [mehr]
In VB.NET 2003 kannst du eine Farbe aus der Aufzählung `KnownColor` auswählen und daraus ein `Color`-Objekt erstellen. Das geht so: ```vb.net Dim meineFarbe As Color meineFarbe = Color.From... [mehr]
In VB.NET 2003 (also .NET Framework 1.1) hat das Hinzufügen von Imports-Anweisungen für nicht verwendete Namespaces oder Klassen in der Regel **keinen nennenswerten Einfluss auf die Grö... [mehr]
In **VB.NET 2003** (also .NET Framework 1.1) ist die Unterstützung für Bilder in Menüs standardmäßig auf **Icons** (also `.ico`-Dateien) beschränkt. Das betrifft sowohl... [mehr]
Ja, in **VB.NET 2003** kann folgender Vergleich zu einem Fehler führen: ```vb If shinfo.hIcon <> IntPtr.Zero Then ' ... End If ``` **Grund:** In VB.NET 2003 (also .NET Framewor... [mehr]
Um ein mit `SHGetFileInfo` extrahiertes Icon in VB.NET 2003 unter einem anderen Namen zu speichern, gehst du wie folgt vor: 1. **Icon extrahieren:** Mit `SHGetFileInfo` erhältst du einen Handle... [mehr]
Der Fehler „Der Vorgang 'read' konnte nicht auf dem Speicher...“ ist kein typischer .NET-Fehler, sondern ein Zugriffsverletzungsfehler (Access Violation), der meist auftritt, wen... [mehr]