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相关推荐

  1. javafx canvas_JavaFX技巧2:使用Canvas API进行清晰绘图

    javafx canvas 最初开始使用Canvas API时,我注意到渲染代码的结果有些模糊,甚至更糟,不一致. 有些线条模糊,有些线条清晰. 来自Swing,我花了一些时间才意识到这是由JavaF ...

  2. JavaFX技巧1:可调整大小的Canvas

    在使用FlexGanttFX时,我不得不处理很多JavaFX Canvas节点. 我正在使用它在时间轴上呈现活动. 甘特图中的每一行都是一个Canvas节点. 用户可以选择单独调整每行的大小. 因此, ...

  3. javafx swing_JavaFX技巧9:请勿混用Swing / JavaFX

    javafx swing JavaFX团队非常努力地说服我们,因为可以将Swing内容嵌入JavaFX UI中,反之亦然,因此从Swing迁移到JavaFX很容易. 我必须承认,我从来没有尝试过,但是 ...

  4. javafx vbox 居中_JavaFX VBox调整大小

    我在基于JavaFX的游戏中创建弹出式确认消息,并试图弄清楚布局是如何工作的.我的弹出类扩展StackPane它的构造看起来像这样:JavaFX VBox调整大小 public PopUp (Stri ...

  5. javafx css_JavaFX技巧13:研究Modena CSS文件

    javafx css 到目前为止,这是最简单,最短的提示. 如果要执行以下任何操作: 了解如何使用CSS 使您的自定义控件看起来像标准控件 重用标准控件使用的SVG路径图形(例如,滚动条箭头) 弄清楚 ...

  6. javafx html5_JavaFX技巧5:可观察

    javafx html5 即使在整个NSA监视的这段时间,实现JavaFX控件时也要牢记可观察性,这仍然是一个好主意. 与Swing相比,这在JavaFX中很容易实现. 旧时光 来自Swing,我习惯 ...

  7. HTML5 Canvas游戏开发实战 PDF扫描版

    HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...

  8. html怎么做下雨效果,Canvas制作的下雨动画的示例

    简介 在codepen上看到一个Canvas做的下雨效果动画,感觉蛮有意思的.就研究了下,这里来分享下,实现技巧. 效果截图: Canvas动画基础 大家都知道,Canvas其实只是一个画板.我们可以 ...

  9. 提高HTML5 canvas性能的几种方法!

    http://blog.csdn.net/zyz511919766/article/details/7401792 简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为 ...

最新文章

  1. CSS Sprites图片合并
  2. Eclipse android
  3. 常用的函数式接口_Consumer接口
  4. python中cumsum_在python里“np.cumsum”这个命令是干什么的?怎么使用?
  5. 拼多多砍价小程序源码 流量主系列
  6. 用一把吃鸡的时间,免费上云搭建网站应用
  7. 打包图片上传cdn_Media Buy之Landing Page的资源文件CDN部署方案
  8. mysql limit 不起作用_这句mysql中为什么limit起不到作用
  9. zabbix安装以及监控(一)
  10. linux下文本处理
  11. 标记集合 java编译_深入理解Java虚拟机读书笔记-java编译期和运行期优化
  12. 微信 公众号 网页授权登录(静默授权)
  13. 你所不知道的良心网站第三弹
  14. 17_AOP入门准备_Salay案例(利用动态代理)
  15. Win7安全模式卡在ClassPNP.sys位置解决办法
  16. MNI模板和Talairach模板的区别
  17. matlab怎么求三次微分,matlab课设三阶微分方程多种方法求解.doc
  18. 欧拉角速率与机体角速度转换详细推导
  19. switch语句总结
  20. 求一份 电力猫 QCA6410 原理图等

热门文章

  1. 【树形DP】路径计数机(nowcoder 1103-B)
  2. Hadoop生态hive(三)Hive QL介绍
  3. 五分钟轻松了解Hbase面向列的存储
  4. 由「Metaspace容量不足触发CMS GC」从而引发的思考
  5. jQuery 基础教程 (五)之使用jQuery创建动画效果
  6. Java线程池,从使用到原理
  7. 乐观锁的一种实现方式——CAS
  8. 一道丧心病狂的java面试题
  9. ssm(Spring+Spring mvc+mybatis)mybatis配置文件——mybatis-config.xml
  10. JavaScript对象与事件