Рисование прозрачных изображений в Java Graphics2dJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Рисование прозрачных изображений в Java Graphics2d

Сообщение Anonymous »

Я хочу нарисовать частично прозрачное изображение поверх другого (делая тени над вещами). В настоящее время я использую класс java Graphics2D для рендеринга, мне сказали установить композит на альфакомпозит, но это только устанавливает его полностью прозрачный. Что мне нужно сделать, чтобы это исправить? AlphaComposite ac = java.awt.AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.5F);
g.setComposite(ac);
< /code>

(кстати, я использую изображения PNG) < /p>

Зорнив ваш SSCimport java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Window;

import javax.swing.ImageIcon;

import com.blazingkin.atrox.ScreenManager;

public class AtroxAdventrum{

public static void main(String[] args) {
new AtroxAdventrum().run();
}

private static DisplayMode modes[] = {

//new DisplayMode(1080,720,32,0),
//new DisplayMode(1080,720,24,0),
//new DisplayMode(1080,720,16,0),
//new DisplayMode(1440,900,32,0),
//new DisplayMode(1440,900,24,0),
//new DisplayMode(1440,900,16,0),

};
private boolean running = true;
public ScreenManager s;

public void stop(){
running = false;
}

public void run(){
try{
init();
gameLoop();
}finally{
s.restoreScreen();
}
}

public void init(){
s = new ScreenManager();
DisplayMode dm = s.findFirstCompatibleMode(modes);
s.setFullScreen(dm);

Window w = s.getFullScreenWindow();
w.setFont(new Font("Arial", Font.PLAIN, 20));
w.setBackground(Color.black);
w.setForeground(Color.white);
}

public void gameLoop(){
long startTime = System.currentTimeMillis();
long cumTime = startTime;

while (running)
{
long timePassed = System.currentTimeMillis() - cumTime;
cumTime += timePassed;
if (limitfps){
try{
Thread.sleep(15);
}catch(Exception e){}
}
update(timePassed);
Graphics2D g = s.getGraphics();
draw(g);
g.dispose();
s.update();
}
}

public void update(long timePassed){
}

public boolean limitfps = false;

public void draw(Graphics2D g){
g.clearRect(0, 0, s.getWidth(), s.getHeight());
AlphaComposite ac = java.awt.AlphaComposite.getInstance(AlphaComposite.CLEAR,0.5F);
g.setComposite(ac);
g.drawImage(new ImageIcon("Images/Test.png").getImage(), 30, 30, 30, 30, null);
}

}
< /code>

Если вы запустите это, вам придется вступить в Alt + и закончить процесс (поскольку в этой части кода ничего нет) < /p>

Подробнее здесь: https://stackoverflow.com/questions/827 ... graphics2d
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно вызвать "java.net.url.toexternalform ()", потому что «местоположение» - это null java netbeans graphics2d
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • (Игровой дизайн) Сглаживание в Java Graphics2d
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Java Graphics2D fillRect создает квадраты неправильного размера с узором
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Java Graphics2D fillRect создает квадраты неправильного размера с узором
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Graphics2d на JPanel
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»