透明な背景でオブジェクトを表示できるJAVA2D
処理中のレンダリング モードは(および とは対照的に)だけですか? 他の 2 つのモード ( 、 )でコードを書き直そうとしましたが、背景が不透明 (デフォルトでは黒) になりました。おそらく、それらを透明にする方法がありませんか? オブジェクトに表示している s は、期待どおりに透明になっています。不透明なのは の背景です。私はプロジェクトに取り組んでおり、透明性を維持するために現在選択していますが、代わりに とその機能を代わりに使用できるかどうか疑問に思っています。PGraphics
P2D
P3D
P3D
P2D
PGraphics
png
PGraphics
PGraphics
JAVA2D
PGraphics
P3D
オンラインで調べてみるとJAVA2D
、以前のバージョンの Processing (1.*) で PGraphics を透過的にレンダリングできる唯一のモードであると信じられていましたが、これがバージョン 2 で変更されたのではないかと思います。
事前にご説明とご協力をお願いいたします。
アップデート:
以下は、私のコードのサンプルです (Java の Eclipse で、Processing をコンポーネントとして記述)。vk の返信png
は、Processing pde では (私の s で) うまく機能しますが、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 = "/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 = "/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;
}
}
注: 2番目のクラスで
最後のsave()
関数が必要かどうかはわかりませんmakeMotifArray()
(透明性を維持するための別の試みです)。