Announcement

Collapse
No announcement yet.

Bitmap aus Form erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bitmap aus Form erzeugen

    hi...
    ich möchte ein bitmap von meiner form haben...
    dafür gibts die methode
    Code:
    DrawToBitmap
    leider wird nur ein bitmap der größe 45x45 erzeugt obwohl ich die methode so aufrufe:
    Code:
    form.DrawToBitmap(Bitmap,Rectangle)
    | |
    V V
    Code:
    m_infoWindow.DrawToBitmap(info,new Rectangle(new Point(0,0),new Size(m_infoWindow.Height,m_infoWindow.Width)));
    wie kann ich die bitmap in richtiger größe bekommen?

  • #2
    Hallo,

    das Argument Bitmap muss zuerst erstellt werden.

    [highlight=c#]
    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    Bitmap bmp = new Bitmap(this.Width, this.Height);
    this.DrawToBitmap(bmp, new Rectangle(0, 0, this.Width, this.Height));
    bmp.Save("Form1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    }
    }
    [/highlight]

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      danke für die antwort... lag aber an etwas anderem....
      konnte nur ich lösen, da kein quelltext gepostet war... sry..

      das mit der größe hab ich hinbekommen, leider wird mir meine form leer angezeigt, ohne die darauf befindenden labels usw...

      woran kann das liegen?
      Code:
       m_infoWindow = new VToolNG.Views.DummyInfoWindow(bezeichnung, herstartnr, hersteller);
      x = m_infoWindow.Height;
      y = m_infoWindow.Width;
      Image image = new Bitmap(y,x);
      info = new Bitmap(image);
      m_infoWindow.DrawToBitmap(info,new Rectangle(new Point(0,0),new Size(y,x)));
      bei anzeige des bitmaps ist die form zu sehen, aber leer...

      Comment


      • #4
        Gehts jetzt oder nicht?
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Die Form wird angezeigt, in der richtigen größe....



          ABER, ohne inhalt....

          es sind 5 labels, ein datagridview und eine picturebox auf der form...
          leider ist in der bitmap davon nichts zu sehen....

          Comment


          • #6
            ok.. fehler gefunden...

            die form muss einmal visible gewesen sein, damit alle controlls angezeigt werden....

            kann man das irgendwie umgehen?

            Comment


            • #7
              In deinem Code-Snippet sind einige unnötige Schritte -> siehe mein Bsp. oben.

              MSDN:
              Die DrawToBitmap-Methode wird nicht für ActiveX-Steuerelemente unterstützt. Sie können das OnPrint-Ereignis überschreiben und benutzerdefinierte Drucklogik nach Bedarf bereitstellen.

              Die DrawToBitmap-Methode weist die folgenden Einschränkungen auf.

              Bei großen Bitmaps wird möglicherweise eine ArgumentException ausgelöst. Die zulässige Höchstgröße hängt vom Computer ab.

              DrawToBitmap unterstützt die Ink-Steuerelemente für das Betriebssystem Windows XP Tablet PC Edition 2005 nicht.

              DrawToBitmap zeichnet keine untergeordnete TextBox, wenn die Visible-Eigenschaft der TextBox auf false festgelegt ist.

              Steuerelemente in Containern werden in umgekehrter Reihenfolge gerendert.

              DrawToBitmap ist für die RichTextBox nicht völlig funktionsfähig. Es wird nur der Rahmen einer Bitmap gezeichnet.
              Wenn nichts davon zutriff wird alles in die Bitmap gerendert was auf dem Bildschirm zu sehen ist.

              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment


              • #8
                ... Außerdem gibt es Einschränkungen z.B. bei ToolStrips und WebBrowser.

                Unter NET 1.1 stand DrawToBitmap nicht zur Verfügung. Dafür gab es einen Umweg, der auch bei diesen Einschränkungen funktioniert.

                Ich habe alles zusammengefasst als fertige Lösung in einer FormPrint-Klasse, die unter CodeProject zur Verfügung steht.

                Gruß Jürgen

                Comment


                • #9
                  @gfoidl: in der msdn war ich schon und habs auch gelesen....
                  es trifft nichts auf meine form zu... wie gesagt.. labels, datagridview und picturebox....

                  das problem das ich habe ist, das die form zuerst einmal visible gewesen sein muss, damit alle controlls gezeichnet werden...
                  momentan funktionierts wenn ichs so mache:
                  Code:
                  ...
                  form.visible = true;
                  form.visible = false;
                  ...
                  da ich die bitmap aber als tooltip verwenden möchte , ist es unschön das ein fenster aufpoppt, zugeht und das gleiche dann als tooltip erneut angezeigt wird....

                  @Jürgen Thomas:
                  ich werde mir deine lösung mal anschauen

                  Comment

                  Working...
                  X