2017-03-07 9 views
1

コードは画像のグラフィックにコンポーネントをペイントしますが、グラフィックのサイズに合わせるのではなく、変換します。画像をスクリーンそのものよりも大きなグラフィックに塗りつぶし

int ratio = 2; 
Image screenshotImage = Image.createImage(getWidth()* ratio,getHeight()* ratio); 
c.revalidate(); 
c.setVisible(true); 
c.paintComponent(screenshotImage.getGraphics(), true); 

コンテンツの一部が切り捨てられるため、画像を使用することはできません。 コンポーネントは、指定されたサイズの画像グラフィックスにペイントすることができます。

感謝

答えて

0

使用:コンポーネントは、フォーム上に現在ある

c.setX(0); 
c.setY(0); 
c.setWidth(img.getWidth()); 
c.setHeight(img.getHeight()); 
if(c instanceof Container) { 
    c.setShouldLayout(true); 
    c.layoutContainer(); 
} 
c.remove(); 
c.paintComponent(myImage.getGraphics(), true); 
// add c back to it's parent container and revalidate 

場合は、後で親フォーム上の再検証を呼び出すことにより、そのすべてを元に戻すしたいと思います。

+0

setShouldLayoutは保護されているので、オーバーライドして新しいコンテナクラスを作成し、メソッドを追加するとすべてのコードが作成されます。動作しませんでした。 – Goran

+0

Yehaコピーして貼り付け、幅/高さを0に設定しました。これで修正されました。 –

+0

- 画像上にコンポーネントを塗りつぶしますが、画面のみをクリップすることができます - すべて取得できますか? – Goran

関連する問題