SuM-Zeichnung in Variable oder als Bild speichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SuM-Zeichnung in Variable oder als Bild speichern

    Hallo Community,



    ich habe ein Problem. Ich habe mit der SuM-Bibliothek eine CAD-Zeichnung entworfen. Wenn man z.B. auf der Tastatur w drückt wird eine Wand gezeichnet, wenn man auf t drückt eine Tür und so weiter. Das funktioniert auch. Jetzt möchte ich die Zeichnung die man erstellet als Bild speichern (z.B. beim schliessen), oder in einer Variable speichern. Wie kann ich das realisieren?



    CAD Hauptprogramm:

    Quellcode

    1. import sum.kern.*;
    2. /**
    3. * @author
    4. * @version
    5. */
    6. public class CAD
    7. {
    8. // Objekte
    9. Tastatur dieTastatur;
    10. Maus dieMaus;
    11. Bildschirm derBildschirm;
    12. Planstift meinStift;
    13. boolean stop = false;
    14. // int i;
    15. // Konstruktor
    16. public CAD()
    17. {
    18. derBildschirm = new Bildschirm();
    19. dieMaus = new Maus();
    20. dieTastatur = new Tastatur();
    21. meinStift = new Planstift();
    22. fuehreAus();
    23. }
    24. // Dienste
    25. public void fuehreAus()
    26. {
    27. meinStift.bewegeBis(100,150);
    28. meinStift.runter();
    29. while(stop==false)
    30. {
    31. if(dieTastatur.wurdeGedrueckt())
    32. {
    33. if(dieTastatur.zeichen()=='w')
    34. {
    35. meinStift.zeichneWand();
    36. }
    37. if(dieTastatur.zeichen()=='f')
    38. {
    39. meinStift.zeichneFenster();
    40. }
    41. if(dieTastatur.zeichen()=='t')
    42. {
    43. meinStift.zeichneTuer();
    44. }
    45. if(dieTastatur.zeichen()=='l')
    46. {
    47. meinStift.zeichneLinkeEcke();
    48. }
    49. if(dieTastatur.zeichen()=='r')
    50. {
    51. meinStift.zeichneRechteEcke();
    52. }
    53. dieTastatur.weiter();
    54. }
    55. //Leerlauf
    56. while(dieMaus.istGedrueckt())
    57. {}
    58. }
    59. // Aufraeumen
    60. dieTastatur.gibFrei();
    61. meinStift.gibFrei();
    62. derBildschirm.gibFrei();
    63. }
    64. }
    Alles anzeigen


    Planstift (Vordefinierte Zeichnung der Wand, der Tür...):

    Quellcode

    1. import sum.kern.*;
    2. /**
    3. * @author Kevin & Yifan
    4. * @version 08.03.2012
    5. */
    6. public class Planstift extends Buntstift
    7. {
    8. // Bezugsobjekte
    9. // Attribute
    10. // Konstruktor
    11. public Planstift()
    12. {
    13. super();
    14. }
    15. public void zeichneWand()
    16. {
    17. this.runter();
    18. this.bewegeUm(20);
    19. this.hoch();
    20. this.dreheUm(-90);
    21. this.bewegeUm(5);
    22. this.runter();
    23. this.dreheUm(90);
    24. this.bewegeUm(-20);
    25. this.hoch();
    26. this.bewegeUm(20);
    27. this.dreheUm(90);
    28. this.bewegeUm(5);
    29. this.dreheUm(-90);
    30. }
    31. public void zeichneFenster()
    32. {
    33. this.dreheUm(-90);
    34. this.runter();
    35. this.bewegeUm(5);
    36. this.dreheUm(180);
    37. this.bewegeUm(2.5);
    38. this.dreheUm(-90);
    39. this.bewegeUm(20);
    40. this.dreheUm(-90);
    41. this.bewegeUm(2.5);
    42. this.dreheUm(180);
    43. this.bewegeUm(5);
    44. this.dreheUm(-90);
    45. this.hoch();
    46. }
    47. public void zeichneLinkeEcke()
    48. {
    49. this.bewegeUm(5);
    50. this.runter();
    51. this.dreheUm(-90);
    52. this.bewegeUm(5);
    53. this.dreheUm(-90);
    54. this.bewegeUm(5);
    55. this.hoch();
    56. this.dreheUm(-90);
    57. this.bewegeUm(5);
    58. }
    59. public void zeichneRechteEcke()
    60. {
    61. this.runter();
    62. this.bewegeUm(5);
    63. this.dreheUm(-90);
    64. this.bewegeUm(5);
    65. this.hoch();
    66. }
    67. public void zeichneTuer()
    68. {
    69. this.dreheUm(-90);
    70. this.runter();
    71. this.bewegeUm(5);
    72. this.dreheUm(180);
    73. this.bewegeUm(2.5);
    74. this.dreheUm(-105);
    75. this.bewegeUm(20);
    76. this.dreheUm(180);
    77. this.bewegeUm(20);
    78. this.dreheUm(105);
    79. this.bewegeUm(2.5);
    80. this.dreheUm(90);
    81. this.hoch();
    82. this.bewegeUm(20);
    83. this.runter();
    84. this.dreheUm(90);
    85. this.bewegeUm(5);
    86. this.dreheUm(-90);
    87. this.hoch();
    88. }
    89. }
    Alles anzeigen




    Vielen Dank schon mal im vorraus.

    Gast1255
  • Hallo Gast1255,

    ich weiß nicht genau wie Deine Applikation aussieht, aber wie wäre es wenn Du die Zeichnung auf dem Bildschirm darstellst und per Screenshot speicherst?
    Ein Beispiels-Quelltext zur Speicherung eines Screenshots könnte so aussehen:

    Java-Quellcode

    1. import java.awt.Dimension;
    2. import java.awt.Rectangle;
    3. import java.awt.Robot;
    4. import java.awt.Toolkit;
    5. import java.awt.image.BufferedImage;
    6. import javax.imageio.ImageIO;
    7. .
    8. .
    9. .
    10. public void captureScreen(String fileName) throws Exception {
    11. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    12. Rectangle screenRectangle = new Rectangle(screenSize);
    13. Robot robot = new Robot();
    14. BufferedImage image = robot.createScreenCapture(screenRectangle);
    15. ImageIO.write(image, "png", new File(fileName));
    16. }
    Alles anzeigen

    Quelle: willcode4beer.com

    Viel Erfolg und viele Grüße
    Heppner