vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Maus & Tastatur · Drag & Drop   |   VB-Versionen: VB.NET09.04.08
Grafik aus PictureBox nach Word / Corel Photo Paint o.ä. ziehen

Das Beispiel ermöglicht es eine Grafik aus einer VB Anwendung nach z.B. MS Word, Corel Photopaint o.ä. zu "ziehen".

Autor:   Heinz PrelleBewertung:  Views:  13.763 
www.visual-basic5.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgendes Beispiel zeigt, wie man das Bild einer PictureBox via Drag & Drop in eine andere Anwendung schieben kann (bspw. Word, Corel Photopaint etc.).

Erstellen Sie ein neues Projekt und platzieren auf die Form eine PictureBox (PictureBox1). Laden Sie über den Eigenschaften-Dialog ein beliebiges Bild in die PictureBox. Fügen Sie jetzt folgenden Code in den Codeteil der Form ein:

Imports System.IO
Imports System.Drawing.Imaging
Public Class Form1
  Private Sub PictureBox1_MouseDown(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
 
    ' Drag & Drop einleiten
    Me.DragPictureBoxContentTo(Me.PictureBox1)
  End Sub
  ''' <summary>
  ''' Drag + Drop von PictureBox nach MS Word / Corel Photo Paint o.ä.
  ''' </summary>
  Private Sub DragPictureBoxContentTo(ByVal pb As PictureBox)
    Const INDEPENDENT_BITMAP As String = "DeviceIndependentBitmap"
    Dim save As New MemoryStream
    Dim write As New MemoryStream
    Const OFFSET As Integer = 14
 
    Try
      Dim dt As New DataObject
      If pb IsNot Nothing Then
        ' Inhalt der PictureBox in MemoryStream speichern
        pb.Image.Save(save, ImageFormat.Bmp)
 
        ' Memory-Stream als Byte-Array
        Dim content As Byte() = save.GetBuffer()
 
        ' die ersten 14 Bytes abschneiden und in neues
        ' MemoryStream-Objekt speichern
        write.Write(content, OFFSET, CInt(save.Length - OFFSET))
        save.Position = 0
 
        ' MemoryStream dem DataObject zuweisen
        ' Format: DeviceIndependentBitmap
        dt.SetData(INDEPENDENT_BITMAP, write)
 
        ' Daten des DataObjekts für den Drag&Drop Kopiervorgang verwenden
        pb.DoDragDrop(dt, DragDropEffects.Copy)
      End If
 
    Catch ex As Exception
      MessageBox.Show(ex.Message.ToString(), "Info")
 
    Finally
      ' Objekte wieder freigeben
      If save IsNot Nothing Then save.Dispose()
      If write IsNot Nothing Then write.Dispose()
    End Try
  End Sub
End Class



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.