首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大单词应用,使用画布Javafx,有趣的挑战

大单词应用,使用画布Javafx,有趣的挑战
EN

Stack Overflow用户
提问于 2016-12-13 21:27:41
回答 1查看 145关注 0票数 1

有趣的挑战:

试图创建一个应用程序,该应用程序显示由用户输入的一堆重复文本组成的大单词的形式。

我使用PixelReader从字母A的图像中获取每个点

代码语言:javascript
复制
//create pixel readers and writer to write to canvas
    PixelReader pixreader = imga.getPixelReader();  
    PixelWriter pixwriter = gc.getPixelWriter();

    //point arrays
    ArrayList<Integer> xpoints = new ArrayList<>();
    ArrayList<Integer> ypoints = new ArrayList<>();

    //Read shape of letter by the color of its pixels against a white background
    for(int readY=0;readY<imga.getHeight();readY++){
        for(int readX=0;readX<imga.getWidth();readX++){

            Color color = pixreader.getColor(readX, readY);
            if(!color.equals(Color.WHITE) ){
                //color = Color.TRANSPARENT; 
                xpoints.add(readX);
                ypoints.add(readY);
            }                     
        }
    }

我从用户那里得到了混乱的词语:

代码语言:javascript
复制
public void writeOut(String bigWord, String littlewords){

    HBox word = new HBox();
    word.setPadding(new Insets(10,10,10,10));

    String[] letters = bigWord.split("\\B");
    littleWordArray = littlewords.split(" ");
    inputText = littlewords;


private String getRandomSmallWord(){
    int size = littleWordArray.length;
    return littleWordArray[rand.nextInt(size)];
}

问题是,现在我有了所有这些构成一个A的点,我想要在这个模型中统一地写文本……

我的几次尝试都失败了,其中包括:

代码语言:javascript
复制
for(int ix = 0;ix<xpoints.size();ix+=100){
    String nextWord = getRandomSmallWord();
    int nextwordlength = nextWord.length();
    int currentX = xpoints.get(ix);
    int currentY = ypoints.get(ix);
    gc.strokeText(nextWord,currentX,currentY);
    //gc.strokeText(nextWord,currentX+5,currentY+5);
    //gc.strokeText(getRandomSmallWord(),(currentX+nextwordlength),currentY,30.0);
    System.out.println("("+currentX+", "+currentY+")");

}

我正在向高级开发商伸出援助之手,借我你的智慧!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-13 22:34:51

所以这不是一个真正的StackOverflow风格的问题,也许我不应该在这里回答它。但是无论如何,这里有一个创建一个由较小的单词组成的单词的方法的示例。它不使用画布,而是使用混合标签。这可能对你没有用,但可能会给你一些想法来考虑。至少,我希望它能帮助你编辑和澄清你的问题,以帮助你更全面地解释你想要完成的事情,以及什么是阻止你完成任务的确切问题。

代码语言:javascript
复制
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.effect.BlendMode;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class WordViewer extends Application {

    private static final int NUM_ITERATIONS = 200;
    private static final String bigWords =
            "Lorem";
    private static final String littleWords =
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";

    public void start(Stage stage) {
        Label smallLabel = new Label(
                IntStream.range(0, NUM_ITERATIONS)
                        .mapToObj(i -> littleWords)
                        .collect(Collectors.joining(" "))
        );
        smallLabel.setStyle(
                "-fx-font-size: 9px; " +
                "-fx-background-color: black; " +
                "-fx-text-fill: white"
        );
        smallLabel.setWrapText(true);
        smallLabel.setPrefWidth(1350);

        Label largeLabel = new Label(bigWords);
        largeLabel.setStyle(
                "-fx-font-size: 400px; " +
                "-fx-background-color: black; " +
                "-fx-text-fill: white"
        );

        largeLabel.prefWidthProperty().bind(smallLabel.widthProperty());
        largeLabel.prefHeightProperty().bind(smallLabel.heightProperty());
        largeLabel.setAlignment(Pos.CENTER);

        largeLabel.setBlendMode(BlendMode.MULTIPLY);

        StackPane layout = new StackPane(
                smallLabel,
                largeLabel
        );

        Scene scene = new Scene(layout);
        stage.setScene(scene);
        stage.show();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41130849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档