2013-03-01 67 views

回答

1

在這裏你去:

public static void main(String[] args) 
{ 
    final Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setText("Widget"); 
    shell.setLayout(new GridLayout(1, false)); 

    final StyledText text = new StyledText(shell, SWT.BORDER); 
    text.setText("Text to capture"); 
    text.setStyleRange(new StyleRange(0, text.getText().length(), display.getSystemColor(SWT.COLOR_RED), display.getSystemColor(SWT.COLOR_BLACK))); 
    text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); 

    Button button = new Button(shell, SWT.PUSH); 
    button.setText("Capture"); 
    button.addListener(SWT.Selection, new Listener() 
    { 
     public void handleEvent(Event event) 
     { 
      Point tableSize = text.getSize(); 
      GC gc = new GC(text); 
      final Image image = new Image(display, tableSize.x, tableSize.y); 
      gc.copyArea(image, 0, 0); 
      gc.dispose(); 

      ImageLoader loader = new ImageLoader(); 
      loader.data = new ImageData[] {image.getImageData()}; 
      loader.save("swt.png", SWT.IMAGE_PNG); 

      image.dispose(); 
     } 
    }); 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 

這是Shell的樣子:

enter image description here

這是所拍攝圖像的樣子:

enter image description here

+0

親愛的巴茲,由於一噸的代碼..我能在StyledText轉換爲圖像,但如果含量更多,使用滾動面板,只打印了暴露的內容.. – CarlJohn 2013-03-04 12:33:00

+0

@CarlJohn有要實現這一點並不容易。你可以用'GC'將它自己「繪畫」成一個'Image',但是這聽起來像很多工作。 – Baz 2013-03-04 12:38:16