vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
welches Steuerelement ist am besten 
Autor: Manuela
Datum: 10.09.10 07:42

Guten Morgen

Ich hätte eine Frage. Ich möchte eine Reihe von Bildern einlesen (die zahl variiert immer) und sie dann Horizontal scrollen können. Also wie einen Filmstreifen so auf die Art. Welches Steuerelement ist dafür am besten geeignet? Übrigens die Bilder sollen 200x200 in der Vorschau dargestellt werden. Habe es mit einer Listbox versucht aber die bekomme ich nicht dazu das Einträge Horizontal dargestellt werden.

Hoffe ihr könnt mir helfen.

Grüße Manuela
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: DotNetErbse
Datum: 10.09.10 08:05

Panel in Verbindung mit Pictureboxen

Du musst beim "Füllen" des Panels die Pictureboxen jeweils positionieren


Am besten, Du baust Dir dazu ein eigenes Usercontrol, bei dem Du

- das Verzeichnis angibst

und Dir die interne Logic

- die Pictureboxen erzeugt,
- die Grafik lädt,
- die Pictureboxen positioniert

und beim disposen

- die Pictureboxen disposest (wichtig)

Mit freundlichen Gr??en
DotNetErbse


[Es hei?t Paket und nicht Packet, auch wenn Standard augenscheinlich von Standar(t)e kommt,hei?t es dennoch Standar(d)]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: Manuela
Datum: 10.09.10 08:59

Danke. Aber mit Panel und Pictureboxen habe ich es schon versucht. Dabei verwischen sich die Pictureboxen immer wenn ich schnell scrolle.

Was meinst du mit Dispotest?

So hatte ich es

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles Button2.Click
        For i = 1 To 50
            Dim ptb As New PictureBox
            ptb.Size = New Size(120, 80)
            ptb.Location = New Drawing.Point(i * 122, 1)
            ptb.SizeMode = PictureBoxSizeMode.StretchImage
            ptb.Image = OpenImage("D:\Eigene Dateien\Eigene Bilder\Spike" & _
              "Neu\DSC00239.JPG")
            Bildlaufleiste.Controls.Add(ptb)
 
        Next i
    End Sub
 
    Public Function OpenImage(ByVal FileName As String) As Image
        Dim sr As New System.IO.StreamReader(FileName)
        Try
            Return (Image.FromStream(sr.BaseStream))
        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            If Not sr Is Nothing Then
                sr.Close()
                sr = Nothing
            End If
        End Try
    End Function
wobei Bildlaufleiste das Panel ist. Und es Momentan nur mit dem gleichen Bild gefüllt wird.

Grüße Manuela

Beitrag wurde zuletzt am 10.09.10 um 09:03:21 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: DotNetErbse
Datum: 10.09.10 09:03

hab Dir ein Projektdownload per Mail geschickt...

Mit freundlichen Gr??en
DotNetErbse


[Es hei?t Paket und nicht Packet, auch wenn Standard augenscheinlich von Standar(t)e kommt,hei?t es dennoch Standar(d)]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: Maas
Datum: 10.09.10 09:03

Vielleicht interessiert es dich (oder auch andere), hier wäre eine Lösung für WPF.
        <ListBox Name="lstItems" Margin="12" >
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" IsItemsHost="True" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Image Width="40" Height="40" Source="{Binding}" _
                      Margin="15,0" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As _
      System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim dir As New IO.DirectoryInfo("p:\ath")
        Dim files = dir.GetFiles("*.png", IO.SearchOption.TopDirectoryOnly)
        lstItems.ItemsSource = From f In files Select New BitmapImage(New Uri( _
          f.FullName))
    End Sub
Maas

Beitrag wurde zuletzt am 10.09.10 um 09:04:39 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: ModeratorRalfE (Moderator)
Datum: 10.09.10 09:35

Und wer große Bilder da laden will und sich über die Performance beschweren will, hier zwei Tipps:

Nicht das ganze Originalbitmap laden, sondern nur ein Thumbnail genieren und anzeigen. Spar tunglaublich Ressourcen.
Zum anderen statt StackPanel ein VirtualizingSTackPanel verwenden. Dies generiert nur für die sichtbaren Bilder entsprechende Elemente.

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: Manuela
Datum: 10.09.10 10:59

Danke für die Tipps und schnelle Hilfe.
Funktioniert genial.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: welches Steuerelement ist am besten 
Autor: DotNetErbse
Datum: 10.09.10 11:57

Ich hab für sowas ne eigene exPicturebox (inherits Picturebox),
die beim ImageLoad automatisch ein Thumbnail erzeugt und anzeigt,
wenn die Originalgrafik größer ist, als ein eingestellter Schwellwert.

Ein Boolean "IsThumbnail" sagt mir dann, ob die PB ein Original ist, oder nicht.
In einem weiteren Property habe ich den Pfad zur Datei und kann bei Bedarf über ein GetImage auf die Originaldatei zugreifen, wobei ich auch da nicht wissen muss, ob das ein Thumbnail ist, oder nicht.

Oder eine Funktion zur Bilddrehung. Es ist einfacher das (geladene) Bild in der Picturebox zu drehen, als die Originaldatei, oder auch eine Thumbnaildatei. Bei Scans oft hilfreich.

So ist alles schön gekapselt und im Programm muss ich mich darum nicht kümmern...

Ich sag nur Laden - fertig!

Mit freundlichen Gr??en
DotNetErbse


[Es hei?t Paket und nicht Packet, auch wenn Standard augenscheinlich von Standar(t)e kommt,hei?t es dennoch Standar(d)]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel