<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3392838755444799704</id><updated>2011-04-21T18:17:00.871-07:00</updated><category term='Custom Fill'/><category term='JavaFX'/><category term='Custom Shape'/><title type='text'>Coder's Imperative</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codersimperative.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3392838755444799704/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codersimperative.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matt Coatney</name><uri>http://www.blogger.com/profile/17069263223371859905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3392838755444799704.post-5249446169780648384</id><published>2009-01-05T02:21:00.000-08:00</published><updated>2009-01-05T22:27:25.073-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Fill'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Shape'/><title type='text'>Creating a custom fill in JavaFX</title><content type='html'>&lt;p&gt;&lt;br /&gt;JavaFX 1.0: Creating a Custom Fill That Changes Over Time&lt;br /&gt;Difficulty: Beginner&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This tutorial will demonstrate how to create a custom fill and use it to fill a custom shape. We can create a star with our fill by adding the star polygon below as part of the Stage's Scene content. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;img src=http://www.freeimagehosting.net/uploads/649b16d725.gif border=0 alt="Free Image Hosting"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;Diff&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;DiffusionEffect&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;br /&gt;&lt;font color="#2040a0"&gt;DiffusionEffect&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;Rectangle&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;height&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#FF0000"&gt;50&lt;/font&gt;,&lt;font color="#2040a0"&gt;width&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#FF0000"&gt;50&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;star&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;Polygon&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;Polygon&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;points&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#FF0000"&gt;0&lt;/font&gt;,&lt;font color="#FF0000"&gt;75&lt;/font&gt;,&lt;br /&gt;        &lt;font color="#FF0000"&gt;200&lt;/font&gt;,&lt;font color="#FF0000"&gt;75&lt;/font&gt;,&lt;br /&gt;        &lt;font color="#FF0000"&gt;40&lt;/font&gt;,&lt;font color="#FF0000"&gt;200&lt;/font&gt;,&lt;br /&gt;        &lt;font color="#FF0000"&gt;100&lt;/font&gt;,&lt;font color="#FF0000"&gt;0&lt;/font&gt;,&lt;br /&gt;        &lt;font color="#FF0000"&gt;170&lt;/font&gt;,&lt;font color="#FF0000"&gt;200&lt;/font&gt;,&lt;br /&gt;        &lt;font color="#FF0000"&gt;0&lt;/font&gt;,&lt;font color="#FF0000"&gt;75&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;fill&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;bind&lt;/font&gt; &lt;font color="#2040a0"&gt;Diff&lt;/font&gt;.&lt;font color="#2040a0"&gt;paint&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We'll create two classes, Diffusion.fx which creates a fill texture and DiffusionEffect.fx as a model class that holds the Paint variable and changes it using a timer. Let's start by looking at Diffusion.fx&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Visible items in JavaFX are Nodes. The fill property of a Node takes an object that extends javafx.scene.paint.Paint which must override the function getAWTPaint() and return java.awt.Paint. We'll do this with java.awt.TexturePaint. We can create the TexturePaint object using a java.awt.image.BufferedImage and java.awt.Rectangle as arguments. The rectangle is used to adjust the dimensions of the image. We can tile the image by adjusting the dimensions of the rectangle to a size smaller than the shape it will fill.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Diffusion.fx is a Paint object. So we could already assign an instance of Diffusion to the fill property of our shape ( eg.: fill: Diffusion{} ). But it would be static. Since we're creating a fill that changes over time, we have to create a model class, DiffusionEffect, and give it a timer to change the image. The timer will get a new instance of the Diffusion class which will render a different randomized image every hundred milliseconds. Let's look at DiffusionEffect.fx&lt;br /&gt;&lt;p&gt;&lt;br /&gt;By assigning our javafx.scene.paint.Paint variable a new Diffusion instance every time the timer fires we can bind the paint variable to the fill property of any Node. By using binding, the node's fill is automatically updated everytime the variable changes creating the animated effect. All we have to do is make sure we start the timer after the node has been initialized (in postinit).&lt;p&gt;&lt;br /&gt;For fun, adjust the dimensions of the rectangle passed to DiffusionEffect (best to maintain a square). Start with 5 and increment. You'll get something that resembles an energy effect we saw in 80's cartoons like Transformers. This is also how we'd go about tiling an image in a custom shape or node.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Here are Diffusion.fx and DiffusionEffect.fx respectively:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="#444444"&gt;/*&lt;br /&gt; * Diffusion.fx&lt;br /&gt; *&lt;br /&gt; * Author: Matt Coatney&lt;br /&gt; *&lt;br /&gt; */&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;package diffusionfill;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import java.awt.image.BufferedImage;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import java.lang.Math;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import javafx.scene.shape.Rectangle;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;Diffusion&lt;/font&gt; &lt;strong&gt;extends&lt;/strong&gt; &lt;br /&gt;             &lt;font color="#2040a0"&gt;javafx&lt;/font&gt;.&lt;font color="#2040a0"&gt;scene&lt;/font&gt;.&lt;font color="#2040a0"&gt;paint&lt;/font&gt;.&lt;font color="#2040a0"&gt;Paint&lt;/font&gt; &lt;br /&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt; &lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;Rectangle&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;img&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;image&lt;/font&gt;.&lt;font color="#2040a0"&gt;BufferedImage&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#444444"&gt;// Gets a random RGB color&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;function&lt;/font&gt; &lt;font color="#2040a0"&gt;getColor&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;c&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;Color&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;Color&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#2040a0"&gt;Math&lt;/font&gt;.&lt;font color="#2040a0"&gt;random&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;*&lt;/font&gt; &lt;font color="#FF0000"&gt;255&lt;/font&gt;,&lt;br /&gt;            &lt;font color="#2040a0"&gt;Math&lt;/font&gt;.&lt;font color="#2040a0"&gt;random&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;*&lt;/font&gt; &lt;font color="#FF0000"&gt;255&lt;/font&gt;,&lt;br /&gt;            &lt;font color="#2040a0"&gt;Math&lt;/font&gt;.&lt;font color="#2040a0"&gt;random&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;*&lt;/font&gt; &lt;font color="#FF0000"&gt;255&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;strong&gt;return&lt;/strong&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;c&lt;/font&gt;.&lt;font color="#2040a0"&gt;getRGB&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#444444"&gt;// Creates and returns a buffered image &lt;/font&gt;&lt;br /&gt;    &lt;font color="#444444"&gt;// with randomized pixel colors&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;function&lt;/font&gt; &lt;font color="#2040a0"&gt;getImage&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;br /&gt;             &lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;image&lt;/font&gt;.&lt;font color="#2040a0"&gt;BufferedImage&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;bi&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;image&lt;/font&gt;.&lt;font color="#2040a0"&gt;BufferedImage&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;br /&gt;                &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;BufferedImage&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;width&lt;/font&gt; &lt;font color="#2040a0"&gt;as&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;,&lt;br /&gt;                &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;height&lt;/font&gt; &lt;font color="#2040a0"&gt;as&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;,&lt;br /&gt;                &lt;font color="#2040a0"&gt;BufferedImage&lt;/font&gt;.&lt;font color="#2040a0"&gt;TYPE_INT_ARGB&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;            &lt;br /&gt;        &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;i&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#FF0000"&gt;0&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;j&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#FF0000"&gt;0&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;strong&gt;while&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;i&lt;/font&gt; &lt;font color="4444FF"&gt;&amp;lt;&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;height&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;            &lt;strong&gt;while&lt;/strong&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;j&lt;/font&gt; &lt;font color="4444FF"&gt;&amp;lt;&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;width&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#2040a0"&gt;bi&lt;/font&gt;.&lt;font color="#2040a0"&gt;setRGB&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;i&lt;/font&gt;, &lt;font color="#2040a0"&gt;j&lt;/font&gt;, &lt;font color="#2040a0"&gt;getColor&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#2040a0"&gt;j&lt;/font&gt;&lt;font color="4444FF"&gt;+&lt;/font&gt;&lt;font color="4444FF"&gt;+&lt;/font&gt;&lt;br /&gt;            &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#2040a0"&gt;j&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#FF0000"&gt;0&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#2040a0"&gt;i&lt;/font&gt;&lt;font color="4444FF"&gt;+&lt;/font&gt;&lt;font color="4444FF"&gt;+&lt;/font&gt;&lt;br /&gt;        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#2040a0"&gt;bi&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;override&lt;/font&gt; &lt;font color="#2040a0"&gt;function&lt;/font&gt; &lt;font color="#2040a0"&gt;getAWTPaint&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;br /&gt;                             &lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;Paint&lt;/font&gt; &lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;img&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;getImage&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#444444"&gt;// Translate javafx Rectangle to&lt;/font&gt;&lt;br /&gt;        &lt;font color="#444444"&gt;// java.awt.Rectangle&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;rect&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;Rectangle&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;br /&gt;               &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;Rectangle&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;rect&lt;/font&gt;.&lt;font color="#2040a0"&gt;x&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;x&lt;/font&gt; &lt;font color="#2040a0"&gt;as&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;rect&lt;/font&gt;.&lt;font color="#2040a0"&gt;y&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;y&lt;/font&gt; &lt;font color="#2040a0"&gt;as&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;rect&lt;/font&gt;.&lt;font color="#2040a0"&gt;width&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;width&lt;/font&gt; &lt;font color="#2040a0"&gt;as&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;rect&lt;/font&gt;.&lt;font color="#2040a0"&gt;height&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;.&lt;font color="#2040a0"&gt;height&lt;/font&gt; &lt;font color="#2040a0"&gt;as&lt;/font&gt; &lt;font color="#2040a0"&gt;Integer&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;strong&gt;return&lt;/strong&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;java&lt;/font&gt;.&lt;font color="#2040a0"&gt;awt&lt;/font&gt;.&lt;font color="#2040a0"&gt;TexturePaint&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;img&lt;/font&gt;,&lt;font color="#2040a0"&gt;rect&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;postinit&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;        &lt;strong&gt;if&lt;/strong&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;imageRect&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;strong&gt;null&lt;/strong&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;Rectangle&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#2040a0"&gt;height&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#FF0000"&gt;50&lt;/font&gt;,&lt;br /&gt;                &lt;font color="#2040a0"&gt;width&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#FF0000"&gt;50&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="#444444"&gt;/*&lt;br /&gt; * DiffusionEffect.fx&lt;br /&gt; *&lt;br /&gt; * Author: Matt Coatney&lt;br /&gt; *&lt;br /&gt; */&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;package diffusionfill;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import diffusionfill.Diffusion;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import java.awt.event.ActionEvent;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import java.awt.event.ActionListener;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import javafx.scene.shape.Rectangle;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="0000ff"&gt;&lt;strong&gt;import javax.swing.Timer;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;font color="#2040a0"&gt;DiffusionEffect&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;d&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;Diffusion&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;timerListener&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;ActionListener&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;br /&gt;        &lt;font color="#2040a0"&gt;ActionListener&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;override&lt;/font&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;function&lt;/font&gt; &lt;font color="#2040a0"&gt;actionPerformed&lt;/font&gt;&lt;br /&gt;                        &lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;evt&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;ActionEvent&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;Void&lt;/font&gt; &lt;br /&gt;        &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#2040a0"&gt;d&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;Diffusion&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;            &lt;font color="#2040a0"&gt;paint&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;d&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;timer&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt;&lt;font color="#2040a0"&gt;Timer&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt;&lt;br /&gt;        &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;Timer&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#FF0000"&gt;100&lt;/font&gt;, &lt;font color="#2040a0"&gt;timerListener&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt; &lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;Rectangle&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;var&lt;/font&gt; &lt;font color="#2040a0"&gt;paint&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;javafx&lt;/font&gt;.&lt;font color="#2040a0"&gt;scene&lt;/font&gt;.&lt;font color="#2040a0"&gt;paint&lt;/font&gt;.&lt;font color="#2040a0"&gt;Paint&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;d&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;font color="#2040a0"&gt;postinit&lt;/font&gt; &lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;d&lt;/font&gt; &lt;font color="4444FF"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;Diffusion&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt;&lt;font color="4444FF"&gt;:&lt;/font&gt; &lt;font color="#2040a0"&gt;imageRect&lt;/font&gt; &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;timer&lt;/font&gt;.&lt;font color="#2040a0"&gt;start&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="4444FF"&gt;;&lt;/font&gt;&lt;br /&gt;    &lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="4444FF"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;&lt;br /&gt;In this way, we can perform all sorts of interesting animations and let JavaFX perform clipping for us by creating the animation effect as a custom fill. I hope this tutorial will be useful. When I looked for information about custom effects and fills it was pretty scarce.&lt;br /&gt;~M&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3392838755444799704-5249446169780648384?l=codersimperative.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codersimperative.blogspot.com/feeds/5249446169780648384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://codersimperative.blogspot.com/2009/01/creating-custom-fill-in-javafx.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3392838755444799704/posts/default/5249446169780648384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3392838755444799704/posts/default/5249446169780648384'/><link rel='alternate' type='text/html' href='http://codersimperative.blogspot.com/2009/01/creating-custom-fill-in-javafx.html' title='Creating a custom fill in JavaFX'/><author><name>Matt Coatney</name><uri>http://www.blogger.com/profile/17069263223371859905</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
