- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个绘画程序,但用户制作的绘图周围有一个 DropShadow
。当它们删除时,它也会删除 DropShadow
。如果我尝试重新应用 DropShadow
(使其围绕绘图的新边界),它会起作用,但它会使已应用的 DropShadow
的其余部分变暗,而我不这样做不想。
我能想到的解决方案有两个:
DropShadow
效果并在每次删除时重新应用它。据我所知,使用 GraphicsContext.applyEffect()
DropShadow
并清除它并在每次删除时重新绘制。下面的代码实现了我对这个解决方案的尴尬尝试。这是我的代码
FXMLDocument.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.canvas.Canvas?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>
<AnchorPane id="AnchorPane" prefHeight="399.0" prefWidth="465.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cartographerfx.FXMLDocumentController">
<children>
<Pane fx:id="canvasPane" layoutX="26.0" layoutY="20.0" prefHeight="362.0" prefWidth="417.0" style="-fx-border-style: solid;">
<children>
<Canvas fx:id="canvas" height="362.0" onMouseDragged="#CanvasMouseDragged" onMousePressed="#CanvasMouseDown" onMouseReleased="#CanvasMouseUp" width="417.0" />
</children>
</Pane>
</children>
</AnchorPane>
FXMLDocumentController.java
package cartographerfx;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.effect.DropShadow;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
/**
*
* @author Dan
*/
public class FXMLDocumentController implements Initializable {
@FXML
Canvas canvas;
Canvas shadowLayer;
@FXML
Pane canvasPane;
private GraphicsContext gc;
private GraphicsContext sgc;
private boolean isDragging;
private double lastX;
private double lastY;
@FXML
public void CanvasMouseDragged(MouseEvent event) {
if (isDragging) {
if (event.getButton() == MouseButton.PRIMARY) {
gc.setStroke(Color.BLUE);
gc.setLineWidth(10);
gc.strokeLine(lastX, lastY, event.getX(), event.getY());
} else if (event.getButton() == MouseButton.SECONDARY) {
gc.clearRect(event.getX(), event.getY(), 10, 10);
}
lastX = event.getX();
lastY = event.getY();
}
}
@FXML
public void CanvasMouseDown(MouseEvent event) {
isDragging = true;
lastX = event.getX();
lastY = event.getY();
if (event.getButton() == MouseButton.MIDDLE)
{
sgc = gc;
sgc.applyEffect(new DropShadow());
}
}
@FXML
public void CanvasMouseUp(MouseEvent event) {
isDragging = false;
}
@Override
public void initialize(URL url, ResourceBundle rb) {
gc = canvas.getGraphicsContext2D();
isDragging = false;
shadowLayer = new Canvas(canvas.getWidth(), canvas.getHeight());
sgc = shadowLayer.getGraphicsContext2D();
canvasPane.getChildren().add(shadowLayer);
shadowLayer.toBack();
}
}
CartographerFX.java
package cartographerfx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
*
* @author Dan
*/
public class CartographerFX extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
最佳答案
我不明白为什么每个人似乎都在使用 Canvas ,而场景图更适合该任务。为什么不只使用普通的 Pane 和路径。然后,您可以将投影效果直接应用到路径。场景图的优点是您可以根据需要单独编辑每个元素,而 Canvas 从概念上来说基本上只是一个图像,一旦绘制就无法编辑。
关于java - 在 JavaFX Canvas 上应用 DropShadow 作为单独的层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47934981/
现在如果我点击按钮 A,按钮 B 会显示 DropShadow 效果: Private Sub ButtonA_Click(ByVal sender As System.Object, ByVal
我有一个圆 Angular 矩形,我正在尝试对其应用 1px 模糊、1px 垂直偏移投影。我的问题是底部的阴影看起来比侧面的阴影厚得多。有没有办法纠正这个问题,使底部阴影与侧面的宽度相同?我想过使用
完成了一个在我的 CSS 中使用投影的网站。我利用在线工具生成语法 ( http://css3generator.com/ ) 然后在拼图上验证我的网站时,我反复收到关于阴影的验证错误。我做了一些研究
我有一个 WindowStyle 设置为无的 WPF 窗口。有什么方法可以强制此窗口投下阴影(就像 WindowStyle 不是 none 时得到的那样)?我不想将 AllowTransparency
我正在使用 创建自定义窗口表单混合 . (通过设置 AllowTransparency 到 True ) 我已经完成了设计,效果很好。现在我想给它添加阴影效果。 ( DropShadowEffect
我有一个 UWP 应用程序,我应该首先指出它使用很少的 XAML。这些 View 是根据从 API 接收到的 JSON 对象构建的。这意味着绝大多数事情都是在 C# 中完成的,因此给我的问题增加了一点
在我正在 JavaFX 中开发的游戏中,我有带有 Label 的卡片( DropShadow s) s。卡片可以移动,当它们移动时,阴影会留下一条微弱的痕迹。我尝试过使用Node#setCache(b
有没有人试过用 python wand 创建阴影?我浏览了这个文档,找不到 dropshadow 属性。 http://docs.wand-py.org/en/0.4.1/wand/drawing.h
我有一个带有自定义窗口边框的 WPF 应用程序 (.NET Framework 4)。我使用 WPF Shell Integration Library 禁用了玻璃边框, 并绘制我自己的边框。但是,我
我正在尝试在以编程方式添加的 UITableView 上设置投影。 框架高度被设置为屏幕的特定百分比。所以我想在 tableview 本身上设置一个阴影。 我尝试执行以下操作: tableview_r
我试图用 BackDropFilter 做一些像堆栈中的两个图像(其中一个显然用黑色填充)。但结果模糊了堆栈下面的所有内容(甚至在图像的 alpha 区域)。我已经搜索过这种效果,但还没有找到答案。如
使用 JavaFX,我尝试将文本绘制到 Canvas 上,并将投影和反射效果链接在一起。 以下代码将显示反射的红色文本,然后将投影应用于原始文本和反射文本。 Canvas canvas = new C
我一直在整个互联网上搜索这个,但是对于我看到的大多数用 CSS 回答的问题,人们只是给出了代码而没有解释它们。 -fx-effect: dropshadow(gaussian, rgba(0, 0,
似乎无法让 jquery.dropshadow.js 在正确的选择器上工作。我试图选择 id,但我无法让它工作。我也试过这门课(见下文)。 头 window.onload = functi
Short Version: 目标:在 C# 中的无边界 WinForm 中深沉、黑暗的 Windows 7 阴影 已知的现有解决方案 1: 使用 CreateParams 的简单 XP 风格投影。
我有以下模仿 facebook 的菜单样式布局。我想在左侧有一个阴影,如下所示,但是我使用的带有图层阴影的代码使应用程序变得迟缓。我一直无法找到一个好的替代解决方案。有没有人有创建不影响应用程序性能的
这有点让我发疯。将 DropShadowEffect 添加到按钮。在 IDE 中它看起来像这样: 第二个按钮供引用,没有DropShadowEffect。如您所见,接下来没有区别。然后我构建项目,当它
我目前正在尝试在一些填充路径上使用一些不同的阴影来创建多级发光效果。 但是,当尝试恢复上下文时,它不遵循恢复函数,而是将最后一个 dropshadow 的 ShadowColor 和 ShadowBl
我正在制作一个绘画程序,但用户制作的绘图周围有一个 DropShadow 。当它们删除时,它也会删除 DropShadow。如果我尝试重新应用 DropShadow (使其围绕绘图的新边界),它会起作
在合成中使用投影时,我收到了不良效果。要重现此问题,请按照下列步骤操作: 第 1 步:创建一个新的 UWP 项目并定位 Windows 10 Fall Creators Update(10.0;Bui
我是一名优秀的程序员,十分优秀!