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

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

11

05.10.2014, 13:07

Und wie erstelle ich dann einen Screenshot von dem Steuerelement? Mit DrawToBitmap geht das ja nicht - muss ich mir dann was eigenes ausdenken?
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

05.10.2014, 13:09

Wieso sollte DrawToBitmap nicht gehen? Irgendwie versteht mich heute wohl keiner oder ich habe einen am Kopf.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

13

05.10.2014, 14:23

Weil DrawToBitmap nochmal selber alles zeichnet! Aber eben nur das Steuerelement und nicht das eigene Zeug... Das sieht man ja daran, dass der Benutzer die Oberfläche mit allem (auch dem Diagramm) vor sich sieht, dann einen Screenshot erstellen will - auf dem dann das Diagramm fehlt. Ich glaube nicht, dass DrawToBitmap das Diagramm nachträglich löscht, sondern stattdessen alles neuzeichnet bis auf das Diagramm. Und deshalb ist es ja sinnlos vorher eingene Methoden aufzurufen, weil DrawToBitmap ja nochmal selber alles neuzeichnet.

Ich weiß nicht wie ichs sonst erklären soll... :( Ich hoffe natürlich du hast nichts am Kopf!!! ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

05.10.2014, 14:45

Deswegen solltest Du DrawToBitmap überschreiben, das base.DrawToBitmap zuerst aufrufen und dann Deinen eigenen Kram zusätzlich rein malen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

15

05.10.2014, 15:22

Ahh ok jetzt hab ichs kapiert! :)

Ist das denn die einzige mögliche Lösung? Ich möchte nämlich wie schonmal beschrieben, die Screenshots nicht nur für ein Steuerelement erzeugen, sondern für das TabControl... Und meine Zeichenmethode gehört ja nicht zum TabControl, sondern zu einem Untersteuerelement.
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

05.10.2014, 15:24

Das Unterelement wird doch sicherlich ebenfalls ein DrawToBitmap aufgerufen bekommen. Ich gehe davon aus, dass es funktioniert, ist aber sicher nicht die einzige Lösung. Wieso Dein OnDraw nicht gerufen wird und ob das so sein muss, weiß ich nicht. Müsstest Du wie gesagt mal in der Doku oder Ref-Impl nachschauen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

17

05.10.2014, 15:55

Erstelle einen "normalen" Screenshot, den du auf die Fensterposition- und größe beschränkst (oder auch Areale im Fenster).

Lies dazu:
http://msdn.microsoft.com/de-de/library/…(v=vs.110).aspx
http://dotnet-snippets.de/snippet/screenshot-erstellen/697

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

18

05.10.2014, 15:59

Yeah, ich hab den Fehler gefunden!

Code der vorherigen Paint-Methode:

C#-Quelltext

1
2
3
4
5
6
private void PanelDiagramm_Paint(object sender, PaintEventArgs e)
{
    Graphics g = CreateGraphics();
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    // Restlicher Code
}

So hab ichs eben geändert:

C#-Quelltext

1
2
3
4
5
6
private void PanelDiagramm_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    // Restlicher Code
}


Ich vermute mal, dass DrawToBitmap die Paint-Methode aufruft, aber ein anderes Graphics übergibt (das des Bitmap). Weil ich aber vorher immer das Graphics des Steuerelements benutzt hab, wurde nie was in das Bitmap gezeichnet! Jetzt erklärt sich auch, warum die Paint-Methode aufgerufen wurde, aber nichts gezeichnet wurde. Es wurde nämlich nicht NACHHER aufgerufen wie vermutet, sondern VORHER, aber wie oben beschrieben nicht in das Bitmap gezeichnet!

Danke an euch beide, für eure Unterstützung und Mühe mir zu helfen!!! :)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

19

05.10.2014, 16:03

Toll. Ich dachte Deine Paint-Methode wird überhaupt nicht gerufen!? Ja, aber dann ist natürlich alles klar.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

20

05.10.2014, 16:06

Ich habe das Programm im Debugger ausgeführt und da springt er in meine Zeichenmethode.
Das war damit gemeint... Sorry!

Darum hab ich ja das geschlussfolgert:
Kann es sein, dass das Paint-Event NACH dem Erstellen des Screenshots aufgerufen wird?
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Werbeanzeige