vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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 - Fortgeschrittene
Bilder in DataGridView in einer einheitlichen Größe anzeigen 
Autor: martol
Datum: 08.11.11 14:35

VB.NET 2008
Hallo zusammen,

Kennt jemand die Möglichkeit die Bilder im DataGridView in einer einheitlichen Größe anzuzeigen?

Ich lade die Bilder aus der MySQL-Datenbank, die in einem Feldtyp Blob und in der unterschiedlichen Größen gespeichert sind.

mDA = New MySqlDataAdapter(SELECT name, pic FROM person“, CNN)
 
  mCB = New MySqlCommandBuilder(mDA)
  With mCB
   .ConflictOption = ConflictOption.OverwriteChanges
   .SetAllValues = False
  End With
 
  mDT = New DataTable
  mDA.Fill(mDT)
 
  mBS = New BindingSource
  mBS.DataSource = mDT
 
  DGV.DataSource = mBS
 
  DGV.AutoResizeColumns()
  DGV.AutoResizeRows()
Die Bilder werden ohne zusätzlichen Einstellungen in voller Größe angezeigt. Wie bringe ich die Anzeige auf eine einheitliche Größe?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bilder in DataGridView in einer einheitlichen Größe anzeigen 
Autor: martol
Datum: 08.11.11 15:12

ich hab die lösung gefunden:

Dim dgv_ic As DataGridViewImageColumn
'' Column mit bilder finden
  For x = 0 To DGV.Columns.Count - 1
   If DGV.Columns(x).GetType.ToString.Contains("DataGridViewImageColumn") Then
    dgv_ic = CType(DGV.Columns(x), DataGridViewImageColumn)
    dgv_ic.Width = 70
   End If
  Next
'' alle zeilen durchlaufen und ImageLayout einstellen
  For i = 0 To DGV.Rows.Count - 1
   Dim ic As DataGridViewImageCell = CType(DGV.Rows(i).Cells(1), _
     DataGridViewImageCell)
   ic.ImageLayout = DataGridViewImageCellLayout.Zoom
  Next


Beitrag wurde zuletzt am 08.11.11 um 15:12:58 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bilder in DataGridView in einer einheitlichen Größe anzeigen 
Autor: ModeratorFZelle (Moderator)
Datum: 08.11.11 15:51

Die beiden codes sind jeweils sehr suboptimal.

1. Beim lesen einer DataTable bereits den CommandBuilder anzulegen zeugt davon das der wahrscheinlich woanders verwendet wird, das macht man nicht.

2. Viel einfacher als das ganze Grid durchzuwandern ist es das CellFormatting event zu abonieren.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bilder in DataGridView in einer einheitlichen Größe anzeigen 
Autor: Manfred X
Datum: 08.11.11 16:10

Ergänzende Anmerkung:

Eventuell mußt Du noch das Seitenverhältnis berücksichtigen,
d.h. ggf. bei unterschiedlichen Width/Height-Relationen der
Bilder in den Zeilen die Größe geeignet umrechnen und eine neue
Bitmap zeichnen?? (falls keine zentriert-gezoomte Darstellung
gewünscht)

MfG
Manfred

Beitrag wurde zuletzt am 08.11.11 um 16:17:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bilder in DataGridView in einer einheitlichen Größe anzeigen 
Autor: martol
Datum: 09.11.11 11:00

... hier handelt es um die personenfotos, wo seitenverhältnis immer gleich ist - 3:4.
natürlich wenn es anders ist, muss die Cellen-Höhe auch einheitlich berechnet werden
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Bilder in DataGridView in einer einheitlichen Größe anzeigen 
Autor: martol
Datum: 09.11.11 13:34

*zu 1 - einverstanden - hier ist es nicht nötig.
*zu 2 - tatsächlich ist eine bessere lösung. ich habe wie u.a. verwendet:

Private Sub DGV_CellFormatting(ByVal sender As System.Object, ByVal e As _
  System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles _
  DGV.CellFormatting
 
  If TypeOf CType(sender, DataGridView).Rows(e.RowIndex).Cells(e.ColumnIndex) _
    Is DataGridViewImageCell Then
 
   If CType(CType(sender, DataGridView).Rows(e.RowIndex).Cells(e.ColumnIndex), _
     DataGridViewImageCell).Value IsNot DBNull.Value Then
    CType(CType(sender, DataGridView).Rows(e.RowIndex).Cells(e.ColumnIndex), _
    DataGridViewImageCell).ImageLayout = _
    DataGridViewImageCellLayout.Zoom
    'Column-Breite ist schon fest voreingestellt
    CType(sender, DataGridView).Rows(e.RowIndex).Height = CInt(CType(sender, _
      DataGridView).Columns(e.ColumnIndex).Width / 3 * 4)
   End If
 
  End If
 
 End Sub
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