Component
メソッドがありpaint(Graphics)
ます。そのメソッドは、渡されたグラフィックに自分自身を描画します。BufferedImage
BufferedImage には便利なメソッド があるため、これを使用して を作成しますgetGraphics()
。Graphics
これは、上に描画するために使用できる -object を返しますBufferedImage
。
更新:ただし、ペイント メソッドのグラフィックを事前に構成する必要があります。それが、 java.sun.comでの AWT コンポーネントのレンダリングについて見つけたものです。
AWT がこのメソッドを呼び出すと、Graphics オブジェクト パラメーターは、この特定のコンポーネントで描画するための適切な状態で事前構成されます。
- Graphics オブジェクトの色は、コンポーネントの foreground プロパティに設定されます。
- Graphics オブジェクトのフォントは、コンポーネントの font プロパティに設定されます。
- Graphics オブジェクトの平行移動は、座標 (0,0) がコンポーネントの左上隅を表すように設定されます。
- Graphics オブジェクトのクリップ四角形は、再描画が必要なコンポーネントの領域に設定されます。
したがって、これが結果のメソッドです。
public static BufferedImage componentToImage(Component component, Rectangle region) throws IOException
{
BufferedImage img = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_ARGB_PRE);
Graphics g = img.getGraphics();
g.setColor(component.getForeground());
g.setFont(component.getFont());
component.paintAll(g);
if (region == null)
{
region = new Rectangle(0, 0, img.getWidth(), img.getHeight());
}
return img.getSubimage(region.x, region.y, region.width, region.height);
}