http://docs.oracle.com/javase/8/javafx/api/javafx/scene/canvas/graphicscontext.html
对第一条注释的补充:我不是使用路径节点,而是使用画布节点使用GraphicsContext执行呈现,因此不可能修改先前呈现的路径的颜色。我试着做一些事情
Canvas canvas = …;
final GraphicsContext context = canvas.getGraphicsContext();
context.setFill(Color.BLUE);
context.fillRect(0,0,100,100);
…
…
稍后我想重置路径中的像素到透明
context.setStroke(Color.TRANSPARENT);
context.beginPath();
context.moveTo(0, 0);
context.lineTo(10,10);
…
context.stroke();
然而,当混合被应用时,这不起作用。在其他呈现库中,可以使用例如上面提到的混合/合成方法之一来实现这一点,但直到现在,我还无法在JavaFX中识别出这样的功能。
我还没有找到一种机制来根据路径清除画布。但以下是手动操作的方法:
应用了带有路径的掩码的蓝色矩形的示例:
public class ManualBlendWithMask extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Group root = new Group();
// create canvas
Canvas canvas = new Canvas(200, 200);
canvas.setTranslateX(100);
canvas.setTranslateY(100);
// create canvas with blue rectangle
GraphicsContext canvasGC = canvas.getGraphicsContext2D();
canvasGC.setFill(Color.BLUE);
canvasGC.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
// create mask
Canvas mask = new Canvas( canvas.getWidth(), canvas.getHeight());
GraphicsContext maskGC = mask.getGraphicsContext2D();
maskGC.setFill(Color.WHITE);
maskGC.fillRect(0, 0, mask.getWidth(), mask.getHeight());
// draw path
maskGC.setStroke(Color.BLACK);
maskGC.setLineWidth(20);
maskGC.beginPath();
maskGC.moveTo(0, 0);
maskGC.lineTo(400, 400);
maskGC.stroke();
// get image from canvas
WritableImage srcImage = new WritableImage((int) canvas.getWidth(), (int) canvas.getHeight());
srcImage = canvas.snapshot(null, srcImage);
// get image from mask
WritableImage srcMask = new WritableImage((int) mask.getWidth(), (int) mask.getHeight());
srcMask = mask.snapshot(null, srcMask);
PixelReader maskReader = srcMask.getPixelReader();
PixelReader imageReader = srcImage.getPixelReader();
int width = (int) srcMask.getWidth();
int height = (int) srcMask.getHeight();
// create dest image
WritableImage dest = new WritableImage(width, height);
PixelWriter writer = dest.getPixelWriter();
// blend image and mask
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
Color maskColor = maskReader.getColor(x, y);
Color imageColor = imageReader.getColor(x, y);
if (maskColor.equals(Color.WHITE)) {
writer.setColor(x, y, imageColor);
}
}
}
// clear canvas and fill it with the blended image
canvasGC = canvas.getGraphicsContext2D();
canvasGC.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
canvasGC.drawImage(dest, 0, 0);
// draw background with gradient
Rectangle rect = new Rectangle(400, 400);
rect.setFill(new LinearGradient(0, 0, 1, 1, true, CycleMethod.REFLECT, new Stop(0, Color.RED), new Stop(1, Color.YELLOW)));
// show nodes
root.getChildren().addAll(rect, canvas);
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
}
我们正在使用Nimbus LaF开发Swing应用程序。我们已经更改了许多Nimbus默认值(控件、文本、NimbusLightbackground等)以具有黑暗主题。 现在,我们在呈现JLists和JComboxes时遇到了很大的麻烦,因为呈现程序显然使用了NimbusLightBackground颜色作为所选文本的前景。这会导致深蓝色背景上出现深灰色文本-不好。 我曾尝试通过UIManager
因此,我正在创建一个代表自动售货机的GUI。我只是遇到了一些问题,试图让布局按我想要的方式工作。我的想法是在JLabel中插入一个图像,然后在特定位置用透明JButton覆盖该图像,这样当您在特定位置单击图像时,它将触发JButton。我还没有达到透明性,因为我目前正专注于如何将JButton精确地放置在需要的位置。 我已经尝试过setLoctionandsetBound,但没有成功。任何关于如何
在Canvas绘图时,可以通过绘制上下文的strokeStyle属性和fillStyle属性来设置图形的描边颜色和填充颜色。默认颜色为不透明的黑色。 strokeStyle属性和fillStyle属性可以被设置为任意有效的CSS颜色字符串,可以使用颜色名称、十六进制RGB颜色、RGB、RGBA、HSL、HSLA颜色中的任意一种。 在使用RGBA或HSLA颜色时,可以通过设置其透明度(alpha)来
问题内容: 如何在youtube iframe嵌入式视频上叠加具有半透明不透明度的div? 的CSS 编辑(增加了更多说明): HTML5正在接近我们,越来越多的设备使用它而不是Flash,这使youtube视频的嵌入变得复杂,幸运的是,youtube提供了一种特殊的可嵌入iFrame,可以处理所有视频嵌入兼容性问题,但是现在,以前使用半透明div覆盖视频对象的方法不再有效,我现在无法向该对象添加
我希望在Spring Ansi着色日志中使用不同的颜色来区分INFO、DEBUG和TRACE,因为它们目前都设置为绿色(见下表) 从这里的文档中https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-logging-color-coded-outpu
我有eclipse中的源代码(java语言)。然后我检查保险范围。我给4作为输入。但我不知道颜色(红、黄、绿)是什么意思。以下是代码(ifElse.java): 那么,声明80%、分支机构50%和术语50%的含义是什么?怎么计算呢?非常感谢。