javafx canvas_JavaFX技巧1:可调整大小的Canvas
javafx canvas
在使用FlexGanttFX时,我不得不处理很多JavaFX Canvas节点。 我正在使用它在时间轴上呈现活动。 甘特图中的每一行都是一个Canvas节点。 用户可以选择单独调整每行的大小。 因此,我不得不找出调整画布大小的最佳方法,这种现成的方法无法调整大小。 下面的清单显示了如何完成此任务。
所需的主要步骤是:
- 创建Canvas的子类。
- 重写isResizable()方法并返回true。
- 重写prefWidth()和prefHeight()方法。 返回Canvas.getWidth()和Canvas.getHeight()的值。
- 将侦听器添加到“ 画布”的width和height属性中,以便在画布大小更改时触发重绘。
- 将“画布”的width和height属性绑定到父窗格的width和height属性。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;/*** Tip 1: A canvas resizing itself to the size of* the parent pane.*/
public class Tip1ResizableCanvas extends Application {class ResizableCanvas extends Canvas {public ResizableCanvas() {// Redraw canvas when size changes.widthProperty().addListener(evt -> draw());heightProperty().addListener(evt -> draw());}private void draw() {double width = getWidth();double height = getHeight();GraphicsContext gc = getGraphicsContext2D();gc.clearRect(0, 0, width, height);gc.setStroke(Color.RED);gc.strokeLine(0, 0, width, height);gc.strokeLine(0, height, width, 0);}@Overridepublic boolean isResizable() {return true;}@Overridepublic double prefWidth(double height) {return getWidth();}@Overridepublic double prefHeight(double width) {return getHeight();}}@Overridepublic void start(Stage stage) throws Exception {ResizableCanvas canvas = new ResizableCanvas();StackPane stackPane = new StackPane();stackPane.getChildren().add(canvas);// Bind canvas size to stack pane size.canvas.widthProperty().bind(stackPane.widthProperty());canvas.heightProperty().bind(stackPane.heightProperty());stage.setScene(new Scene(stackPane));stage.setTitle("Tip 1: Resizable Canvas");stage.show();}public static void main(String[] args) {launch(args);}
}
运行时,您应该看到以下内容:
翻译自: https://www.javacodegeeks.com/2014/04/javafx-tip-1-resizable-canvas.html
javafx canvas
javafx canvas_JavaFX技巧1:可调整大小的Canvas相关推荐
- javafx canvas_JavaFX技巧2:使用Canvas API进行清晰绘图
javafx canvas 最初开始使用Canvas API时,我注意到渲染代码的结果有些模糊,甚至更糟,不一致. 有些线条模糊,有些线条清晰. 来自Swing,我花了一些时间才意识到这是由JavaF ...
- JavaFX技巧1:可调整大小的Canvas
在使用FlexGanttFX时,我不得不处理很多JavaFX Canvas节点. 我正在使用它在时间轴上呈现活动. 甘特图中的每一行都是一个Canvas节点. 用户可以选择单独调整每行的大小. 因此, ...
- javafx swing_JavaFX技巧9:请勿混用Swing / JavaFX
javafx swing JavaFX团队非常努力地说服我们,因为可以将Swing内容嵌入JavaFX UI中,反之亦然,因此从Swing迁移到JavaFX很容易. 我必须承认,我从来没有尝试过,但是 ...
- javafx vbox 居中_JavaFX VBox调整大小
我在基于JavaFX的游戏中创建弹出式确认消息,并试图弄清楚布局是如何工作的.我的弹出类扩展StackPane它的构造看起来像这样:JavaFX VBox调整大小 public PopUp (Stri ...
- javafx css_JavaFX技巧13:研究Modena CSS文件
javafx css 到目前为止,这是最简单,最短的提示. 如果要执行以下任何操作: 了解如何使用CSS 使您的自定义控件看起来像标准控件 重用标准控件使用的SVG路径图形(例如,滚动条箭头) 弄清楚 ...
- javafx html5_JavaFX技巧5:可观察
javafx html5 即使在整个NSA监视的这段时间,实现JavaFX控件时也要牢记可观察性,这仍然是一个好主意. 与Swing相比,这在JavaFX中很容易实现. 旧时光 来自Swing,我习惯 ...
- HTML5 Canvas游戏开发实战 PDF扫描版
HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...
- html怎么做下雨效果,Canvas制作的下雨动画的示例
简介 在codepen上看到一个Canvas做的下雨效果动画,感觉蛮有意思的.就研究了下,这里来分享下,实现技巧. 效果截图: Canvas动画基础 大家都知道,Canvas其实只是一个画板.我们可以 ...
- 提高HTML5 canvas性能的几种方法!
http://blog.csdn.net/zyz511919766/article/details/7401792 简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为 ...
最新文章
- CSS Sprites图片合并
- Eclipse android
- 常用的函数式接口_Consumer接口
- python中cumsum_在python里“np.cumsum”这个命令是干什么的?怎么使用?
- 拼多多砍价小程序源码 流量主系列
- 用一把吃鸡的时间,免费上云搭建网站应用
- 打包图片上传cdn_Media Buy之Landing Page的资源文件CDN部署方案
- mysql limit 不起作用_这句mysql中为什么limit起不到作用
- zabbix安装以及监控(一)
- linux下文本处理
- 标记集合 java编译_深入理解Java虚拟机读书笔记-java编译期和运行期优化
- 微信 公众号 网页授权登录(静默授权)
- 你所不知道的良心网站第三弹
- 17_AOP入门准备_Salay案例(利用动态代理)
- Win7安全模式卡在ClassPNP.sys位置解决办法
- MNI模板和Talairach模板的区别
- matlab怎么求三次微分,matlab课设三阶微分方程多种方法求解.doc
- 欧拉角速率与机体角速度转换详细推导
- switch语句总结
- 求一份 电力猫 QCA6410 原理图等