`

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[0]);
              
              // Draw the image
              gc.drawImage(printerImage, 0, 0, imageData[0].width,
                imageData[0].height, -trim.x, -trim.y, 
                scaleFactor * imageData[0].width, 
                scaleFactor * imageData[0].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不同,所以要进行转换。 
分享到:
评论

相关推荐

    SWT API 帮助文档 及源码

    5. **图像和位图**:SWT 提供了处理图像和位图的类,如 `Image` 和 `Bitmap`,可以加载、显示和处理图片资源。 6. **对话框(Dialogs)**:SWT 提供了多种类型的对话框,包括消息对话框(MessageDialog)、输入...

    SWT API JAVA

    6. **图像处理**:SWT提供了Image类,可以加载、显示和处理图像资源,如图标、背景图片等。 7. **拖放功能**:SWT支持拖放操作,允许用户通过拖拽控件或数据在界面中进行交互。 8. **打印功能**:SWT提供了...

    第6章 SWT概述

    除了上述核心包,SWT还提供了其他的辅助包,如org.eclipse.swt.dnd用于拖放操作,org.eclipse.swt.printing用于打印功能,以及org.eclipse.swt.accessibility支持无障碍访问。 JFace是在SWT基础上构建的一个高级...

    SWT_2D绘图.doc

    GC可以在任何实现了`Drawable`接口的类上使用,例如控件、图像、显示设备或打印设备。创建GC时,应确保在完成绘图任务后及时调用`dispose()`方法来释放系统资源,因为每个GC对应着底层的操作系统资源,并且在某些...

    SWT API 资料

    SWT还提供了许多高级特性,如拖放支持、打印功能、数据库访问、国际化和本地化等。通过这些特性,开发者可以构建出功能强大且易于使用的桌面应用程序。 本资料集详细介绍了SWT API的各个方面,无论是初学者还是经验...

    Eclipse_Swt_Jface_核心应用_部分19

    第10章 SWT中的拖放支持 211 10.1 可拖放的树 211 10.2 拖放原理概述 214 10.3 拖放源(DragSource) 215 10.3.1 创建拖放源对象 215 10.3.2 定义拖放源数据传输类型 215 10.3.3 处理拖放源事件 216 ...

    java 生成 eps

    在给定的描述中提到了一个博客链接,虽然具体内容无法在当前环境中查看,但可以推测博主可能分享了一个将 SWT 图像转换为 AWT 图像的方法,因为文件名 "ConvertSWTImagetoAWTImage.java" 暗示了这个过程。SWT...

    java源码包---java 源码 大量 实例

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    java源码包2

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...

    java源码包3

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...

    java源码包4

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JasperReport+iReport报表工具详细开发手册

    - **图像**:用于插入静态图片。 - **图表**:用于插入图表,如柱状图、折线图等。 - **表格**:用于展示数据集合。 - **列表**:用于展示单行数据。 - **3.1.2. 设置数据源** 在设计报表前,需要为iReport...

Global site tag (gtag.js) - Google Analytics