Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0077: Bitmap aus Datei erstellen, ohne Schreibzugriff-Sperre

 von 

Beschreibung

Eine aus einem (File-)Stream erstellte Bitmap erfordert, dass der Stream während der Lebensdauer der Bitmap geöffnet bleibt.
Dieses Verhalten ist insofern problematisch, als dadurch in Fremd-Anwendungen Fehler auftreten können, etwa wenn die Bilddatei umbenannt oder verschoben werden soll. Um dieses zu vermeiden reicht es, die Bitmap nach der Erstellung im Speicher umzukopieren.

Sie können den Unterschied leicht testen, indem Sie versuchen die im Tipp enthaltenen Bilddateien zur Laufzeit der Anwendung umzubenennen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Framework-Version(en):

.NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [91,25 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2005
' Option Strict:    An
'
' Referenzen: 
'  - Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
'  - System
'  - System.Data
'  - System.Drawing
'  - System.Windows.Forms
'  - System.Xml
'
' Imports: 
'  - Microsoft.VisualBasic
'  - Microsoft.VisualBasic.ControlChars
'  - System
'  - System.Collections
'  - System.Collections.Generic
'  - System.Data
'  - System.Drawing
'  - System.Diagnostics
'  - System.Windows.Forms
'

' ##############################################################################
' ########################## frmBitmapFileStream.vb ############################
' ##############################################################################
Public Class frmBitmapFileStream
    Private Sub frmBitmapFileStream_Load( _
        ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

        'Diese Bitmap-Erstellung sperrt die Datei für Schreibzugriffe
        Dim bmpFaul As New Bitmap("adelwitz.jpg")

        'Diese Bitmap-Erstellung impliziert keine Sperrung
        Dim bmpColgate As Bitmap
        Using Bmp As New Bitmap("rhein.jpg")
            bmpColgate = New Bitmap(Bmp)
        End Using

        'Anzeige
        With Me.SplitContainer1.Panel1
            .BackgroundImageLayout = ImageLayout.Zoom
            .BackgroundImage = bmpFaul
        End With
        With Me.SplitContainer1.Panel2
            .BackgroundImageLayout = ImageLayout.Zoom
            .BackgroundImage = bmpColgate
        End With
    End Sub
End Class

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.