WIN 发表于 2013-2-7 20:39:02

SWT中打印图片、图像

本文转载自:http://www.blogjava.net/Javawind/articles/129899.html
//Send questions, comments, bug reports, etc. to the authors://Rob Warner (rwarner@interspatial.com)//Robert Harris (rbrt_harris@yahoo.com)import org.eclipse.swt.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.printing.*;import org.eclipse.swt.widgets.*;/** *//** * This class demonstrates printing images */public class ImagePrinterExample {/** *//**   * The application entry point   * @param args the command line arguments   */public static void main(String[] args) {    Display display = new Display();    Shell shell = new Shell(display, SWT.NONE);    try {      // Prompt the user for an image file      FileDialog fileChooser = new FileDialog(shell, SWT.OPEN);      String fileName = fileChooser.open();      if (fileName == null) { return; }      // Load the image      ImageLoader loader = new ImageLoader();      ImageData[] imageData = loader.load(fileName);      if (imageData.length > 0) {      // Show the Choose Printer dialog      PrintDialog dialog = new PrintDialog(shell, SWT.NULL);      PrinterData printerData = dialog.open();      if (printerData != null) {          // Create the printer object          Printer printer = new Printer(printerData);            // Calculate the scale factor between the screen resolution and printer          // resolution in order to correctly size the image for the printer          Point screenDPI = display.getDPI();          Point printerDPI = printer.getDPI();          int scaleFactor = printerDPI.x / screenDPI.x;            // Determine the bounds of the entire area of the printer          Rectangle trim = printer.computeTrim(0, 0, 0, 0);          // Start the print job          if (printer.startJob(fileName)) {            if (printer.startPage()) {            GC gc = new GC(printer);            Image printerImage = new Image(printer, imageData);                            // Draw the image            gc.drawImage(printerImage, 0, 0, imageData.width,                imageData.height, -trim.x, -trim.y,               scaleFactor * imageData.width,               scaleFactor * imageData.height);                // Clean up            printerImage.dispose();            gc.dispose();            printer.endPage();            }          }          // End the job and dispose the printer          printer.endJob();          printer.dispose();      }      }    } catch (Exception e) {      MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);      messageBox.setMessage("Error printing test image");      messageBox.open();    }}} 和打印文字不同。因为系统中的dpi(dot per inch)和打印机的dpi不同,所以要进行转换。
页: [1]
查看完整版本: SWT中打印图片、图像