Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

28.06.2007, 13:41

...nein, aber das Image des Forms

Quellcode

1
myForm.Image;

würde in C++ ungefähr so aussehen (weiß nicht, ob es den Befehl in C++ gibt)

C-/C++-Quelltext

1
MyForm->GetImage();

...das Image kann man dann casten

Quellcode

1
Bitmap bitmap = (Bitmap)myForm.Image;

o.k.?

22

28.06.2007, 13:48

oh - moment - ich glaube die Eigenschaft Image hat gar nicht jedes Form - aber zum Beispiel PictureBox - also damit geht es jedenfalls:

Quellcode

1
2
3
PictureBox MyPicBox;
Bitmap bitmap = (Bitmap)MyPicBox.Image;
Image image = MyPicBox.Image;

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

23

28.06.2007, 13:57

Zitat von »"Passwort:"«

oh - moment - ich glaube die Eigenschaft Image hat gar nicht jedes Form - aber zum Beispiel PictureBox - also damit geht es jedenfalls:

Quellcode

1
2
3
PictureBox MyPicBox;
Bitmap bitmap = (Bitmap)MyPicBox.Image;
Image image = MyPicBox.Image;


Du hast es erfasst! ;-) Aber was bringt mir das Imageobjekt einer PictureBox? Die Frage war ja ursprünglich wie man ein Image des Formulars einschließlich verwendeter Komponenten bekommt. Und eine "Image" Property gibts bei Formularen standardmäßig nichtmal.
@D13_Dreinig

24

28.06.2007, 14:08

...auf die Gafahr hin, mich jetzt noch weiter zu verrennen - hier trotzdem eine andere Möglichkeit:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Bitmap Screenshot(Control Ctrl)
      // Erstellt einen Screenshot des übergebenen Controls / der übergebenen Form.
      // Erfordert Microsoft .NET >= 2.0 (Control.DrawToBitmap)
      // Der Aufrufer ist für eine Entsorgung der returnierten Bitmap zuständig.
      {
         int w = Ctrl.Width;   // Breite des Controls / der Form
         int h = Ctrl.Height;  // Höhe des Controls / der Form

         // Bitmap für das Abbild des Controls / der Form bereitstellen
         Bitmap bmp = new Bitmap(w, h);

         // Screenshot vornehmen und zurückgeben
         Ctrl.DrawToBitmap(bmp, Rectangle.FromLTRB(0, 0, w, h));
         return bmp;
      }

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

25

28.06.2007, 14:10

DrawToBitmap wurd doch schon vorher besprochen, oder? Außerdem kannst du dich mit MSDN Code kaum verennen! ;-P
@D13_Dreinig

26

29.06.2007, 14:47

danke für eure Hilfe. Ich habe das ganze jetzt geregelt bekommen ;-)

Zitat


Man kann ein WinForm einfach in eine Bitmap casten(boxen-was auch immer)?

In C# bzw. .NET gibts für ALLES vorgefertigte Methoden (wie auch in JAVA). Das größte Problem ist die Methodennamen rauszufinden und was genau sie bewirken.
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

27

01.07.2007, 11:08

Hi leutz,

ich hab mal wieder ein kleines Problem, das schreib ich hier in den Thread weil es auf oben das Problem aufbaut.
Ich will das Formular jetzt nicht nur eins zu eins ausdrucken sondern so scalen dass es genau ein DinA4 Blatt ausfüllt! Ich hab schon diverse Dinge versucht aber nichts davon hat funktioniert.
Ich hab es mit ScaleTransform probiert aber irgendwie ist das Bild kleiner statt größer geworden obwohl ich als Faktor 4 komma irgendwas eingegeben habe. Ich frage mich ob es irgendeine vorgefertigte Methode gibt um ein PrintDocument auf DinA4 auszudrucken? Es wäre für mich wichtig

Schon mal vielen dank für jegliche Hilfe
»TheProgrammer«

PS: Sry für den Doppelpost
»TheProgrammer«
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

28

01.07.2007, 11:18

Wenn du dein Bild vergrößern willst musst du der Matrix Werte > 1.0f übergeben. Ansonsten wird das Bild logischerweise kleiner.

// Doppelte Größe

C-/C++-Quelltext

1
2
Matrix scale_mat = new Matrix();
scale_mat.Scale( 2.0f, 2.0f, MatrixOrder.Append );


Zur Not stellst du halt im Druck-Dialog ein das du's skalieren willst! ;-P

Oder du bastelst dir ein neues Bitmap zusammen:

C-/C++-Quelltext

1
Bitmap bmp = new Bitmap( deinImage, new Size( width, height ) );


Dann wird automatisch skaliert.
@D13_Dreinig

29

03.01.2008, 20:29

Ich weiß, dass ganze ist ewig her aber ich habe ein Problem mit deiner BitBlt Methode und zwar ist der Ausdruck leicht versxchwommen. Der Drucken Code sieht wie folgt aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
       private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Graphics graphicsSrc = this.CreateGraphics();
            Image image = new Bitmap(this.Size.Width, this.Size.Height);
            Graphics graphicsDst = Graphics.FromImage(image);

            IntPtr srcDC = graphicsSrc.GetHdc();
            IntPtr dstDC = graphicsDst.GetHdc();

            BitBlt(dstDC, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, srcDC, 0, 0, 13369376);

            graphicsSrc.ReleaseHdc(srcDC);
            graphicsDst.ReleaseHdc(dstDC);

            Bitmap stretchedImage = new Bitmap(image, new Size(800, 1036));

            e.Graphics.DrawImage(stretchedImage, 0, 0);

            this.Close();

        }


Weiß jemand woran es liegt, dass der Ausdruck leicht verschwommen ist. Ich habs auch mitnem anderen Drucker probiert, am Drucker liegts nich!


Bin wie immer dankbar für jede Hilfe!
TheProgrammer
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Werbeanzeige