vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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
Image drucken aus DatagridviewImagecolumn 
Autor: Erichbru
Datum: 25.01.23 19:33

Hallo zusammen,

OK ich habe eine gebundene DGV in der mittlerweile auch "Bilder" angezeigt werden in der "Image" Spalte in Tabelle
Datatyp = System.Byte()



nun habe ich aber noch Problem das zu drucken, wie geht das denn nun ?

also eine PictureBox zu drucken ist kein Problem, aber die DatagridviewImageColumn eben!



für Kommentare jetzt schon Danke, habe schon gesucht aber nicht wirklich was gefunden bzw. hat nicht funktioniert.
eine Codezeile aus einem Beitrag hier, hat bei mir dann diesen Fehler ausgegeben:

Das Objekt des Typs "System.Byte[]" kann nicht in Typ "System.Drawing.Image" umgewandelt werden.
ich speichere die Bilder in Typ "System.Byte[]".

und wenn kein Bild da ist meckert er auch? wer hilft?

ElseIf oColumnTypes(i) Is GetType(DataGridViewImageColumn) _
                      Then
                        Dim oCellSize As Rectangle = New Rectangle(oColumnLefts( _
                        i), nTop, oColumnWidths(i), nHeight)
                        Dim oImageSize As Size = CType(oCell.Value, Image).Size
                        e.Graphics.DrawImage(oCell.Value, New Rectangle( _
                          oColumnLefts(i) + CType(((oCellSize.Width - _
                          oImageSize.Width) / 2), Int32), nTop + CType((( _
                          oCellSize.Height - oImageSize.Height) / 2), Int32), _
                          CType(oCell.Value, Image).Width, CType(oCell.Value, _
                          Image).Height))
                    End If


Beitrag wurde zuletzt am 25.01.23 um 19:44:23 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Image drucken aus DatagridviewImagecolumn 
Autor: Erichbru
Datum: 27.01.23 19:00

Hallo erledigt, habe einen Fehler gefunden und siehe da es funktioniert.

am drucken wird noch gearbeitet (Seitenlayout, etc.) aber das drucken der Image Spalte funktioniert erstmal, die Bilder werden nun auch anders in die DGV eingelesen.



habe gedacht das hier zu posten
so bestücke ich die DGV mit den Bildern aus dem OrdnerPfad
 Private Sub lade_BilderStrom()
        If BS_Zaehlerstrom_Liste.Count = 0 Then Return
 
        For i As Integer = 0 To StromDataGridView.Rows.Count - 1
            Dim bildpfad As String = StromDataGridView.Rows(i).Cells( _
              "ColPfad").Value.ToString
            If IsBildPfad(bildpfad) = True Then
                StromDataGridView.Rows(i).Cells("ColBild").Value = Resize_Image( _
                  New Bitmap(Image.FromFile(bildpfad)))
            Else
                StromDataGridView.Rows(i).Cells("ColBild").Value = Resize_Image( _
                  New Bitmap(Image.FromFile(Application.StartupPath & _
                  "\Stecker_Symbol.JPG")))
            End If
        Next i
    End Sub
wünsche allen einen schönen Abend

drucken folgt
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Image drucken aus DatagridviewImagecolumn 
Autor: Erichbru
Datum: 27.01.23 19:01

Drucken Auszug >>>:

   Dim oStringFormat As StringFormat = Nothing
        Dim TotalWidth As Integer
        'diese Zeile war Fehlerhaft
        Static nRowPos As Integer = 0
        'hier war der Fehler, musste Static heißen sonst 
        'Dim nRowPos As Integer = 0 vorher, somit wurde nRowPos
        'nicht inizialisiert
        Dim NewPage As Boolean = True
        Dim _Titel1 As String = " Testseite Bilderspalte drucken"    
 
        Dim PageNo As Integer = 1
        Dim oColumnLefts As New ArrayList
        Dim oColumnWidths As New ArrayList
        Dim oColumnTypes As New ArrayList
 
        Dim Height As Integer
        Dim Width As Integer
        Dim i As Integer
        Dim RowsPerPage As Integer
        Dim Top As Integer = e.MarginBounds.Top
        Dim Left As Integer = e.MarginBounds.Left
 
        If nRowPos >= StromDataGridView.Rows.Count Then nRowPos = 0
 
        TotalWidth = 0
        Try
            For Each DColumn As DataGridViewColumn In StromDataGridView.Columns
                TotalWidth += DColumn.Width
            Next
 
            If PageNo = 1 Then
                For Each DColumn As DataGridViewColumn In _
                  StromDataGridView.Columns
 
                    Width = CType(Math.Floor(DColumn.Width / TotalWidth * _
                      TotalWidth * (e.MarginBounds.Width / TotalWidth)), Int16)
                    Height = e.Graphics.MeasureString(DColumn.HeaderText, _
                    DColumn.InheritedStyle.Font, Width).Height + 55
                    oColumnLefts.Add(Left)
                    oColumnWidths.Add(Width)
                    oColumnTypes.Add(DColumn.GetType)
                    Left += Width
                Next
            End If
 
            Do While nRowPos < StromDataGridView.Rows.Count
                Dim oRow As DataGridViewRow = StromDataGridView.Rows(nRowPos)
                If Top + Height >= e.MarginBounds.Height + _
                  e.MarginBounds.Top Then
                    ' ''DrawFooter(e, RowsPerPage)
                    NewPage = True
                    PageNo += 1
                    e.HasMorePages = True
                    Exit Sub
                Else
 
                    If NewPage Then
                        Top = e.MarginBounds.Top
                        i = 0
                        For Each oColumn As DataGridViewColumn In _
                          StromDataGridView.Columns
 
                            e.Graphics.FillRectangle(New SolidBrush( _
                              Drawing.Color.LightGray), New Rectangle( _
                              oColumnLefts(i), Top, oColumnWidths(i), Height))
                            e.Graphics.DrawRectangle(Pens.Black, New Rectangle( _
                            oColumnLefts(i), Top, oColumnWidths(i), Height))
                            e.Graphics.DrawString(oColumn.HeaderText, _
                            oColumn.InheritedStyle.Font, New SolidBrush( _
                            oColumn.InheritedStyle.ForeColor), New RectangleF( _
                            oColumnLefts(i), Top, oColumnWidths(i), Height), _
                            oStringFormat)
                            i += 1
                        Next
                        NewPage = False
                    End If
                    Top += Height
                    i = 0
                    For Each oCell As DataGridViewCell In oRow.Cells
 
                        If oColumnTypes(i) Is GetType( _
                          DataGridViewTextBoxColumn) Then
                            e.Graphics.DrawString(oCell.Value.ToString, _
                            oCell.InheritedStyle.Font, New SolidBrush( _
                            oCell.InheritedStyle.ForeColor), New RectangleF( _
                            oColumnLefts(i), Top, oColumnWidths(i), Height), _
                            oStringFormat)
 
                        ElseIf oColumnTypes(i) Is GetType( _
                          DataGridViewImageColumn) Then
                            Dim oCellSize As Rectangle = New Rectangle( _
                            oColumnLefts(i), Top, oColumnWidths(i), Height)
                            Dim oImageSize As Size = CType(oCell.Value, _
                            Image).Size
                            e.Graphics.DrawImage(oCell.Value, New Rectangle( _
                            oColumnLefts(i) + CType(((oCellSize.Width - _
                            oImageSize.Width) / 2), Int32), Top + CType((( _
                            oCellSize.Height - oImageSize.Height) / 2), Int32), _
                            CType(oCell.Value, Image).Width, CType(oCell.Value, _
                            Image).Height))
                        End If
 
                        e.Graphics.DrawRectangle(Pens.Black, New Rectangle( _
                          oColumnLefts(i), Top, oColumnWidths(i), Height))
                        i += 1
                    Next
                End If
 
                nRowPos += 1
                RowsPerPage += 1
 
                e.HasMorePages = False
            Loop
 
 
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, _
              MessageBoxIcon.Error)
        End Try
hätte gerne ein Feedback Danke!
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