对于我当前的项目,我需要一个带有透明背景的大均匀网格,可以缩放和平移。我最初尝试使用带有setPannable(true)
的ScrollPane
,但很快发现即使您调用setStyle("-fx-background-Color:透明")
或setStyle("-fx-background:透明")
,滚动窗格背景也会保持不可见。因此,消除了这个简单的选项后,我需要使有问题的GridPane直接可平移。
我已经尝试了几件事,包括试图将鼠标位置绑定到< code>GridPane的Translate属性(这根本不起作用),但我没有找到更有希望的替代方法来正常工作:
GridPane gridView = new GridPane();
int x;
int y;
gridView.setOnDragEntered( (event) -> {
x = event.getX();
y = event.getY();
});
gridView.setOnDragDetected( (event) -> {
gridView.setTranslateX(X - event.getX());
gridView.setTranslateY(Y - event.getY());
});
然而,这只会使地图向上和向左跳跃,而不是像预期的那样用鼠标慢慢平移。
设法弄明白了大部分。剩下的一个问题是,< code>GridPane在平移时会有些抖动,但目前还在可接受的水平。
int x = 0;
int y = 0;
gridView.setOnMouseDragged((event) -> {
if(x != 0){ //prevent from panning before values are initialized
gridView.setTranslateX( gridView.getTranslateX() + limit(event.getX() - x, 25));
gridView.setTranslateY( gridView.getTranslateY() + limit(event.getY() - y, 25));
}
x = (int)event.getX();
y = (int)event.getY();
});
其中Limit(双num,双限制)
方法将输入num限制在范围[-限制,限制]内。减少限制会减少抖动,但也会以降低响应能力为代价。
我可以在JavaFX中创建一个仅水平滚动的滚动窗格,如下所示: 但是,鼠标滚轮在这种情况下仍然尝试垂直滚动而不是水平滚动(除非我专门在水平滚动条上滚动。)
我试图将乘法VBox添加到scrollpane中的gridpane(在下面的codesnippet中称为refPane)。 它在一行中添加不超过ITEMS_PER_ROW的Vbox,并在下一行中继续。也不应该有更多的行,然后ITEMS_PER_COLUM可见。问题是,如果我添加更多的ITEMS_PER_ROW*ITEMS_PER_COLUMN到网格中,而不是obingbeingscrollable
图形变换 从今天开始,我们就开始谈一谈图形变换。图形变换是指用数学方法调整所绘形状的物理属性,其实质是坐标变形。所有的变换都依赖于后台的数学矩阵运算,所以我们只要使用变换的功能即可,无需去理解这些运算。谈到图形变换,不得不得说的三个基本变换方法就是: 平移变换:translate(x,y) 旋转变换:rotate(deg) 缩放变换:scale(sx,sy) 其实坐标变形的本质是变换矩阵,所以在最
本文向大家介绍Vue实现可移动水平时间轴,包括了Vue实现可移动水平时间轴的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Vue实现可移动水平时间轴的具体代码,供大家参考,具体内容如下 里程碑时间轴具体实现 效果图 编辑里程碑效果图 编辑里程碑 stonedetail.vue 关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。 以上就是本文的全部内容,希望对
本节课的平移变换在“1.3 WebGL坐标系”源码的基础上更改,以下几种方法都是沿着X轴平移-0.4,也就是把所有顶点X坐标分别加-0.4。下面所谓的几种方法并不是说开发实践中存在的方法,本节课这样安排的目的只是为了通过对比加深你的理解。 方法一 重新定义三角形单个顶点的坐标,这也就是说数学计算任务由人完成。 1.3节中三角形三个顶点的坐标如下。 var data=new Float32Array