⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcanvas.java

📁 use Java code to draw on pad canvas
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * @param y      Polyline y components.      * @param image  Image to render.   */  void render (int[] x, int[] y, GImage image)  {    Graphics2D  canvas = (Graphics2D) backBuffer_.getGraphics();    // The image rectangle x,y holds delta values for positioning    int dx = image.getRectangle().x;    int dy = image.getRectangle().y;    int nPoints = x.length;    for (int i = 0; i < nPoints; i++)      canvas.drawImage (image.getImage(), x[i] + dx, y[i] + dy, this);  }    /**   * Position the specified AWT component within this JPanel.   *    * @param component  AWT component to position.   */  void render (GComponent component)  {    Component c = component.getComponent();    c.setLocation (component.getRectangle().x,                   component.getRectangle().y);    if (!isAncestorOf (c))      add (c);  }      /**   * Utility method for computing the rectangle bounding box of   * a rendered string using the specified font.   *    * @param string  Sample string.   * @param font    Font to use.   * @return        Rectangle bounding box of rendered string.   */  Rect getStringBox (String string, Font font)  {    Graphics2D graphics = (Graphics2D) getGraphics();    // For some reason the graphics is not always set    if (graphics == null)      return new Rect (0, 0, 0, 0);    TextLayout textLayout = new TextLayout (string, font,                                             graphics.getFontRenderContext());    Rectangle2D bounds = textLayout.getBounds();    int width  = (int) Math.ceil (bounds.getWidth());    int height = (int) Math.ceil (bounds.getHeight());        return new Rect (0, 0, width, height);  }  /**   * From the Printable interface. Print the present canvas.   *    * @param graphics     The paper graphics.   * @param pageFormat   Page format (not used).   * @param pageIndex    Page index (not used).   * @return             Printable.PAGE_EXISTS.   */  public int print (Graphics graphics, PageFormat pageFormat, int pageIndex)  {    if (pageIndex > 0) return Printable.NO_SUCH_PAGE;          Graphics2D paper = (Graphics2D) graphics;    paper.drawImage (backBuffer_, 0, 0, getWidth(), getHeight(), this);    return Printable.PAGE_EXISTS;  }    /**   * Save the current graphics as a gif file.   *    * @param file  File to store in.   */  void saveAsGif (File file)    throws IOException  {    try {      GifEncoder gifEncoder = new GifEncoder (backBuffer_);      OutputStream stream = new FileOutputStream (file);      gifEncoder.write (stream);      stream.close();    }    catch (AWTException exception) {      throw new IOException ("GIF encoder AWT error");    }  }  /**   * Print the canvas content.   *    * @return  True if no exception was caught, false otherwise.   */  boolean print()  {    try {      PrinterJob printerJob = PrinterJob.getPrinterJob();      printerJob.setPrintable (this);      printerJob.print();      return true;    }    catch (PrinterException exception) {      return false;    }  }      /**   * Implied by LayoutManager   *    * @param name       Name of component to add.   * @param component  Component to add.   */  public void addLayoutComponent (String name, Component component)  {  }      /**   * Implied by LayoutManager. Layout the specified container. All components   * are positined at thir specified x, y location as determined by   * the GAnnotator.   *    * @param container  Container to layout.   */  public void layoutContainer (Container container)  {    Component[] components = container.getComponents();    for (int i = 0; i < components.length; i++) {      Component component = components[i];            int x      = component.getX();      int y      = component.getY();      int width  = component.getPreferredSize().width;      int height = component.getPreferredSize().height;      component.setBounds (x, y, width, height);    }  }    /**   * Implied by LayoutManager. Return minimum layout size.   *    * @param container  Component to return minimum layout size of.   * @return           Size of canvas window.   */  public Dimension minimumLayoutSize (Container container)  {    return new Dimension (getWidth(), getHeight());  }      /**   * Implied by LayoutManager. Return maximum layout size.   *    * @param container  Component to return maximum layout size of.   * @return           Size of canvas window.   */  public Dimension preferredLayoutSize (Container container)  {    return new Dimension (getWidth(), getHeight());      }    /**   * Implied by LayoutManager.   *    * @param component  Component to remove.   */  public void removeLayoutComponent (Component component)  {  }    /**   * Implied by MouseListener. Not used.   *    * @param event  Mouse event trigging this method.   */  public void mouseClicked (MouseEvent event)  {  }    /**   * Method called when the pointer enters this window. If an interaction   * is installed, pass a FOCUS_IN event to it.   *    * @param event  Mouse event trigging this method.   */  public void mouseEntered (MouseEvent event)  {    window_.mouseEntered (event.getX(), event.getY());  }    /**   * Method called when the pointer exits this window. If an interaction   * is installed, pass a FOCUS_OUT event to it.   *    * @param event  Mouse event trigging this method.   */  public void mouseExited (MouseEvent event)  {    window_.mouseExited (event.getX(), event.getY());  }    /**   * Method called when a mouse pressed event occurs in this window.   * If an interaction is installed, pass a BUTTON*_DOWN event to it.   *    * @param event  Mouse event trigging this method.   */  public void mousePressed (MouseEvent event)  {    int modifiers = event.getModifiers();    int buttonEvent;    if      (modifiers == event.BUTTON1_MASK)      buttonEvent = GWindow.BUTTON1_DOWN;    else if (modifiers == event.BUTTON2_MASK)      buttonEvent = GWindow.BUTTON2_DOWN;    else      buttonEvent = GWindow.BUTTON3_DOWN;    window_.mousePressed (buttonEvent, event.getX(), event.getY());  }    /**   * Method called when a mouse release event occurs in this window.   * If an interaction is installed, pass a BUTTON*_UP event to it.   *    * @param event  Mouse event trigging this method.   */  public void mouseReleased (MouseEvent event)  {    int modifiers = event.getModifiers();    int buttonEvent;    if      (modifiers == event.BUTTON1_MASK)      buttonEvent = GWindow.BUTTON1_UP;    else if (modifiers == event.BUTTON2_MASK)      buttonEvent = GWindow.BUTTON2_UP;    else      buttonEvent = GWindow.BUTTON3_UP;    window_.mouseReleased (buttonEvent, event.getX(), event.getY());  }    /**   * Method called when the mouse is dragged (moved with button pressed) in   * this window. If an interaction is installed, pass a BUTTON*_DRAG   * event to it.   *    * @param event  Mouse event trigging this method.   */  public void mouseDragged (MouseEvent event)  {    int modifiers = event.getModifiers();    int buttonEvent;    if      (modifiers == event.BUTTON1_MASK)      buttonEvent = GWindow.BUTTON1_DRAG;    else if (modifiers == event.BUTTON2_MASK)      buttonEvent = GWindow.BUTTON2_DRAG;    else      buttonEvent = GWindow.BUTTON3_DRAG;    window_.mouseDragged (buttonEvent, event.getX(), event.getY());  }    /**   * Method called when the mouse is moved inside this window.   * If an interaction is installed, pass a MOTION event to it.   *    * @param event  Mouse event trigging this method.   */  public void mouseMoved (MouseEvent event)  {    window_.mouseMoved (event.getX(), event.getY());  }  /**   * Implied by ComponentListener. Not used.   *    * @param event  Event trigging this method.   */  public void componentHidden (ComponentEvent event) {}  /**   * Implied by ComponentListener. Not used.   *    * @param event  Event trigging this method.   */  public void componentMoved (ComponentEvent event) {}    /**   * Implied by ComponentListener. Not used.   *    * @param event  Event trigging this method.   */  public void componentShown (ComponentEvent event) {}    /**   * Called when the AWT component is resized.   *    * @param event  Resize event.   */  public void componentResized (ComponentEvent event)  {    createBackBuffer();    cleared_ = new Rect (0, 0, getWidth(), getHeight());    window_.resize();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -