【问题标题】:Java - Multi-colored textJava - 多色文本
【发布时间】:2014-07-15 11:08:01
【问题描述】:

我想要一些文字,但每个字符都有更多颜色。这是一个例子, 请忽略 o's 的彩蛋,这些只是我徽标的一部分。第一个图像是用 Photoshop 创建的,第二个是用 Word 创建的。

但不是显示,而是显示:

这确实是有道理的,因为它是一种字体并且字体中没有任何颜色,但我想知道是否有办法使文本的颜色和阴影不同,就像 TYCOON 中出现的“N”一样。这将显示在 JLabel 中。任何帮助表示赞赏!

【问题讨论】:

  • 所以你想让你的字体看起来漂亮吗?为什么不存储 Photoshop 徽标并将其用作图像?
  • 我想在我的游戏中输入更多文字。不只是这一件事。

标签: java fonts colors


【解决方案1】:

将文本转换为精美的徽标将非常困难...而是使用图像。

将您的文本放入 Photoshop 并将其导出为图像(就像您所做的那样)。然后用图片代替文字。

【讨论】:

    【解决方案2】:

    首先,您需要为每个角色创建包含所需(花哨)颜色的图像(例如,在 PhotoShop 或您用于为游戏创建图像的任何其他应用程序中)。

    接下来,您需要使用这些图像来绘制文本,而不是使用常规字体和JLabel。所以这需要(稍微)更多的工作......

    由于您没有提供有关您使用的 Java 组件/库的任何详细信息,因此我只能提供一些伪代码作为示例:

    String text = "My colorful text";
    int x = START_X; //< x-coordinate of next char
    int y = START_y; //< y-coordinate of next char
    
    for (int i = 0; i < text.length(); i++) {
      char c = text.charAt(i));
      switch(c) {
        case ' ': //Space, increase x-coordinate
          x += SPACE_WIDTH;
          break;
         case '\n': // New line, reset x-coordinate and increase y-coordinate
           x = START_X;
           y += LINE_HEIGHT;
         default: // Draw character at x, y and increase x-coordinate
           charImage = getImage(c);
           drawCharacter(x, y, charImage);
           x += charImage.getWidth();
       }
    }
    

    这个(伪代码)示例假设您有

    • 为给定字符找到正确图像的方法:getImage()
    • 一种绘制图像的方法:drawCharcter()
    • 一种查找图像宽度的方法:getWidth()

    此外,您可能需要一些额外的检查/case-statements 来处理您可能遇到的其他特殊字符。 但是该示例应该可以帮助您设置代码来解决您的问题。

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多