Doubts on LinearGradient#proportional=true
Tom Schindl
tom.schindl at bestsolution.at
Fri Jun 8 08:17:52 PDT 2012
But how does it then work if one uses a proportional=false and 0,0,1,0?
I'm trying to translate SVG linear gradients to FXML and it fails
because of this behavior. I'm having a hard time understanding how I'd
map their definition to FXML. For Rects calculating the offset would be
easy.
Tom
Am 08.06.12 17:06, schrieb Richard Bair:
> Perhaps you are being tripped up by the coordinate spaces. The rectangle is drawn at 40 in the x of it's coordinate system, and the gradient starts at 0. So the first 40px of gradient are to the left of the left edge of the rectangle. If the rect were at 0 you would see what you expect, I think. If you translate the rect vs move it you would see what you expected as well.
>
>
>
> On Jun 8, 2012, at 7:56 AM, Tom Schindl <tom.schindl at bestsolution.at> wrote:
>
>> here it is.
>>
>> The rect I get:
>> http://www.efxclipse.org/screen.png
>>
>> The rect I expected:
>> http://www.efxclipse.org/screen_expected.png
>>
>> Tom
>>
>> Am 08.06.12 16:48, schrieb Tom Schindl:
>>> It looks like the image gets stripped. Let me upload it somewhere and
>>> come back to you
>>>
>>> Tom
>>>
>>> Am 08.06.12 16:44, schrieb Pavel Safrata:
>>>> Hi Tom,
>>>> did you forget to attach the image or did the system strip it somewhere
>>>> along the way? I executed your code and saw exactly what you expected -
>>>> gradient in the left half of the rectangle, what do you see? By the way,
>>>> the code uses proportional=false, unlike suggested in the description,
>>>> so please try to clarify your question.
>>>> Thanks,
>>>> Pavel
>>>>
>>>> On 8.6.2012 16:33, Tom Schindl wrote:
>>>>> Hi,
>>>>>
>>>>> I'm not sure if i understood proportional true wrong or I'm found a
>>>>> serious bug.
>>>>>
>>>>>> import java.util.ArrayList;
>>>>>> import java.util.List;
>>>>>>
>>>>>> import javafx.application.Application;
>>>>>> import javafx.scene.Group;
>>>>>> import javafx.scene.Scene;
>>>>>> import javafx.scene.paint.Color;
>>>>>> import javafx.scene.paint.CycleMethod;
>>>>>> import javafx.scene.paint.LinearGradient;
>>>>>> import javafx.scene.paint.Stop;
>>>>>> import javafx.scene.shape.Rectangle;
>>>>>> import javafx.stage.Stage;
>>>>>>
>>>>>> public class TestGradient extends Application {
>>>>>>
>>>>>> /**
>>>>>> * @param args
>>>>>> */
>>>>>> public static void main(String[] args) {
>>>>>> launch(args);
>>>>>> }
>>>>>>
>>>>>> @Override
>>>>>> public void start(Stage primaryStage) throws Exception {
>>>>>> Group g = new Group();
>>>>>> Rectangle r = new Rectangle(40,0,90,75);
>>>>>> List<Stop> stops = new ArrayList<Stop>();
>>>>>> stops.add(new Stop(0, Color.RED));
>>>>>> stops.add(new Stop(1, Color.BLUE));
>>>>>> LinearGradient lg = new LinearGradient(0, 0, 90, 0, false,
>>>>>> CycleMethod.NO_CYCLE, stops);
>>>>>> r.setFill(lg);
>>>>>> g.getChildren().add(r);
>>>>>> Scene s = new Scene(g,200,200);
>>>>>> primaryStage.setScene(s);
>>>>>> primaryStage.show();
>>>>>> }
>>>>>>
>>>>>> }
>>>>> Running this code gives me an UI like shown in the attached screenshot.
>>>>> Is this really the right behaviour? I'd expect red to start on the left
>>>>> of the rect and end at 1/2 of the width.
>>>>>
>>>>> Tom
>>>>>
>>>
>>>
>>
>>
>> --
>> B e s t S o l u t i o n . a t EDV Systemhaus GmbH
>> ------------------------------------------------------------------------
>> tom schindl geschäftsführer/CEO
>> ------------------------------------------------------------------------
>> eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43 512 935833
>> http://www.BestSolution.at phone ++43 512 935834
--
B e s t S o l u t i o n . a t EDV Systemhaus GmbH
------------------------------------------------------------------------
tom schindl geschäftsführer/CEO
------------------------------------------------------------------------
eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43 512 935833
http://www.BestSolution.at phone ++43 512 935834
More information about the openjfx-dev
mailing list