2016-11-18 4 views
0

У меня есть глупая проблема. Я хочу добавить текст с альфа-0,5 на мою фотографию, чтобы сделать водяной знак, но setColor не добавляет цвета. Когда я пытаюсь использовать setComposite, я вижу ошибку «не могу найти символ».Как добавить прозрачный текст к фотографии?

buffered.getGraphics().drawImage(img, 0, 0, null); 
      buffered.getGraphics().setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 
      0.1f)); 
buffered.getGraphics().setColor(new Color(0.2f,0.3f,0.4f,0.5f)); 
buffered.getGraphics().setFont(new Font("Serif", Font.PLAIN, 32)); 
buffered.getGraphics().drawString("text", img.getWidth()/2, img.getHeight()/2); 
buffered.getGraphics().dispose(); 
+0

1) Чтобы лучше помочь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 2) [В этом примере] (http://stackoverflow.com/a/13440543/418556) показано, как использовать цвет для создания полупрозрачного текста. (Я рассматриваю возможность использовать его, чтобы закрыть это как дубликат, хотя речь идет о преобразованиях в основном.) –

+0

* «Когда я пытаюсь использовать' setComposite', я вижу, что ошибка «не может найти символ». » .. 'buffered.getGraphics()' * Это не совсем относится к заявленной цели, так как нет необходимости использовать композиты для получения полупрозрачного текста. Сказав это, это легко объяснить. [SetComposite (..) '] (http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html#setComposite-java. awt.Composite-) - это метод ** API 'Graphics2D' **, тогда как ['BufferedImage.getGraphics()'] (http://docs.oracle.com/javase/8/docs/api/java/ awt/image/BufferedImage.html # getGraphics--) возвращает объект «Graphics». –

+0

.. Чтобы получить экземпляр «Graphics2D», вызовите [** 'createGraphics()' **] (http: // docs. oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html#createGraphics--) –

ответ

0

Прост: вы вызываете getGraphics() несколько раз. Вы получаете новый Графический объект при каждом вызове.

Вызвать getGraphics() только один раз и использовать ссылку для всех дальнейших вызовов.