AxMsChartcontrol und Die Zwischenablage

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    AxMsChartcontrol und Die Zwischenablage

    Hallo Zusammen,

    Folgendes möchte ich erreichen:
    Ich habe ein AxMsChartcontrol und möchte dieses drucken.
    Dazu möchte ich mit

    VB.NET-Quellcode

    1. AxMSChart1.EditCopy()

    den Inhalt in die Zwischenablage kopieren.
    Anschließend möchte ich Das Bild in einer PictureBox einfügen. Dazu habe ich folgende Befehle versucht:

    VB.NET-Quellcode

    1. PictureBox1.Image = Clipboard.GetData(DataFormats.Bitmap)
    2. PictureBox1.Image = Clipboard.GetImage()


    Nun zu dem Problem:
    Nach dem Editcopy-Befehl befindet sich das Bild sicher in der Zwischenablage. Ich kann es z.B. in Paint einfügen. Wenn ich das Bild jetzt wieder aus Paint rauskopiere kann ich es mit einem der beiden Befehle (getdata und getimage) in die Picturebox laden.
    Wenn ich es aber nicht zwischendurch in Paint einfüge und wieder rauskopiere, bekomme ich bei der PictureBox1.Image=.... Zeile folgende Fehlermeldung:
    Eine Ausnahme vom Typ "System.ExecutionEngineException" wurde ausgelöst.

    Kann es daran liegen, dass AxMsChartcontrol ein Com-Steuerelement ist und VB mit .Net Framework arbeitet?
    Ich habe allerdings unzählige Codebeispiele wie meines gefunden die angeblich funktionieren. Warum funktioniert meines also nicht?

    Ich benutze Visual Basic 2008 Express Edition

    Mfg, Jan
    Probier mal, das Bild nicht vom AxMsChartcontrol zu kopieren, sondern von einer anderen PictureBox.
    So kannst Du zumindest ausschließen, dass Dein Code nicht funktioniert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mit PictureBox1.Image = Clipboard.GetImage() wird die Image-Eigenschaft auf die Zwischenablage gesetzt. Ich denk, das muß vorher in ein Bitmap-Object kopiert wern.
    Ich tät erstma das Image aus der Zwischenablage in eine Bitmap-Variable zu laden und anschließend diese Bitmap der Picbox zuweisen.

    VB.NET-Quellcode

    1. Dim bmp as Bitmap = Clipboard.GetImage()
    2. 'und dann
    3. PictureBox1.Image = bmp

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Es funktionieren alle 3 Zeilen einzeln, hab's ausprobiert. :thumbsup:
    Kann es sein, dass AxMSChart1.EditCopy() ein blödes Format kopiert, z.B. RGB8-indiziertes Format oder so?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn ich versuche Das Bild in eine Bitmap-Variable zu laden, Gibt er mir wieder genau die gleiche Fehlermeldung. Das Problem ist offenbar, dass das Format von der Bitmap die das AxMsChart ausspuckt sich irgendwie von der Bitmap die VB erwartet unterscheidet. Nur wie löse ich das?
    Mach mal ein kleines separates Testprogramm:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim o1 As Object = Clipboard.GetData(DataFormats.Bitmap)
    3. Dim o2 As Object = Clipboard.GetData(DataFormats.Palette)
    4. Dim o3 As Object = Clipboard.GetData(DataFormats.Tiff)
    5. Stop
    6. End Sub

    Wenn das Programm anhält, klick der Reihe nach auf o1, o2, o3 und Shift+F9 und sieh nach, was drin steht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn ich das mache markiert er mir
    o1 As Object = Clipboard.GetData(DataFormats.Bitmap)
    und sagt wieder
    Eine Ausnahme vom Typ "System.ExecutionEngineException" wurde ausgelöst.

    Kann es sein, dass mein chartcontrol einfach blöd ist, und ich das falsche runtergeladen hab? das ist ja standartmäßig nicht in visual basic express enthalten und man muss es extra hinzufügen. ich hab das hier genommen:
    ocxdump.com/download-ocx-files…/6.00.81774/download.html

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kekse“ ()

    Sorry. Kommentier bitte diese eine Zeile aus.

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. Dim o1 As Object = Clipboard.GetData(DataFormats.Bitmap)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Probier mal über die API, das Format herauszubekommen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!