JAVA2D
Единственный режим рендеринга в обработке, в котором объекты PGraphics
могут быть отображены с прозрачным фоном (в отличие от P2D
и P3D
)? Я пробовал переписать свой код в двух других режимах (P3D
, P2D
), но фоны PGraphics
оказываются непрозрачными (по умолчанию черные). Может быть, мне не хватает метода, который превратит их в прозрачность? png
s Я показываю в PGraphics
объекты становятся прозрачными, как ожидалось; это фоны PGraphics
, которые непрозрачны. Я работаю над проектом и в настоящий момент выбрал JAVA2D
, чтобы сохранить прозрачность, но задаюсь вопросом, могу ли я поочередно использовать P3D
и его функции.Является ли JAVA2D единственным режимом рендеринга для отображения прозрачных объектов PGraphics в обработке?
От взгляда по всему миру считают, что JAVA2D
был единственным режимом, который мог бы сделать PGraphics прозрачным в более ранних версиях обработки (1. *), и мне интересно, изменилось ли это с версией 2?
Заранее благодарим за разъяснения и помощь!
UPDATE:
Ниже приведен пример моего кода (написанного в Eclipse, в Java с обработкой в качестве компонента). Ответ v.k. отлично работает (с моими png
s) в обработке pde, но мне не удалось заставить его работать в моем проекте в Eclipse. Мысли? :
Основной класс:
package tester;
import java.util.ArrayList;
import processing.core.*;
public class GraphicsMain extends PApplet{
int screenWidth = 800;
int screenHeight = 500;
PGraphicsMaker pgm = new PGraphicsMaker(this);
ArrayList<PGraphics> motifArray = new ArrayList<PGraphics>();
public void setup() {
size(screenWidth,screenHeight,P3D);
background(0);
motifArray = pgm.makeMotifArray();
if (motifArray.get(0) == null) {
System.out.println("The motif array is unfilled!");
}
}
public void draw() {
for (int i = 0; i < motifArray.size(); i ++) {
image(motifArray.get(i),200+(10*i),100);
}
}
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "GraphicsMain" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
Второй класс:
package tester;
import java.util.ArrayList;
import processing.core.*;
public class PGraphicsMaker {
String filepath = "https://stackoverflow.com/a/filepath/here/";
PApplet parent;
int populationSampleSize = 16;
int stageWidth = 100;
int stageHeight = 400;
ArrayList<PGraphics> motifArray;
PImage pic;
PImage pic2;
public PGraphicsMaker(PApplet pa) {
parent = pa;
pic = parent.loadImage(filepath + "small_jones6.png");
pic2 = parent.loadImage(filepath + "small_dresser10.png");
}
public ArrayList makeMotifArray() {
String filepathTempPngs = "https://stackoverflow.com/a/filepath/here/tempPngs/";
ArrayList<PGraphics> motifArray = new ArrayList<PGraphics>();
for (int i = 0; i < populationSampleSize; i++) {
motifArray.add(parent.createGraphics(stageWidth,stageHeight,parent.P3D));
motifArray.get(i).beginDraw();
motifArray.get(i).background(255, 255, 255, 0);
motifArray.get(i).image(pic,10,10,100,90);
motifArray.get(i).image(pic2,10,50,50,50);
motifArray.get(i).endDraw();
motifArray.get(i).save(filepathTempPngs + "motif" + i + ".png");
}
return motifArray;
}
}
Примечание: Я не уверен, что последняя save()
функция необходима в makeMotifArray()
во втором классе (просто еще попытка сохранить прозрачность).
привет @ v.k. - Я пробовал ваш код в обработке pde и даже заменял его на 'png's, и он отлично работает! Странно, однако, когда я пытаюсь использовать код в Eclipse (где я пишу свой проект, используя Обработку как компонент), это не сработает. Я сделал обновление моего вопроса выше с кодом из Eclipse. Мысли? – gromiczek
UPDATE: Я обнаружил, что в Eclipse я использовал версию библиотеки Core.jar для обработки с 2010 года, которая поставляется с версией Proclipsing, которую я больше не использую, но библиотекой, которую я использую в качестве внешней ссылки. Моя копия Обработка pde использовала гораздо более новую версию ядра, поэтому ваш код работал там, но не в Eclipse. Я обновил свои основные и и OpenGL-библиотеки, на которые ссылаются в Eclipse, и теперь все отлично работает. Благодаря! – gromiczek
Эй, рад, что это помогло. Приветствия. –