我需要在另一个图像中剪切出文本形状的图像.我认为它最好显示在图像中.
这是一张猫的照片:
这是我要删除的文字:
生成的图像是这样的:
文本图像将始终为黑色并具有透明背景,并且生成的剪切图案也应具有透明背景.两个输入图像也将具有相同的大小.
有没有允许将文本内容转换为图像文件的Java库?我只知道ImageMagick(在这种情况下是JMagick)但我不想安装任何外部二进制文件(我的应用程序将在Tomcat服务器中部署为.war文件,因此我不希望任何其他依赖项比Java更多) .
例如,从字符串"Hello",我想生成这个简单的图像:
我将如何制作这款可调整大小的Chess GUI?
我们公司的任务是制作国际象棋游戏.它需要在Windows,OS X和Linux/Unix机器上工作,我们选择Java来实现这一点,同时保持一个通用的代码库(便于维护和降低成本).
我的任务是创建GUI.用户设计团队已经清除了以下规范.与客户.
国际象棋比赛(国际象棋冠军)将有力量调整大小和直接,它包括:
- 顶部的工具栏,带有UI组件:
- New 按键
- Save 按键
- Restore 按键
- Resign 按键
- 用于向玩家提供消息的标签.
在游戏的左侧,我们需要一个保留供将来使用的区域,它可能包括以下内容:
- 捕获的碎片列表
- 促销典当时选择件的选择器
- 游戏统计
- 提示等
客户和逻辑团队仍在解决这方面的细节.因此,暂时只需使用包含
?
文本的标签进行标记即可.GUI的其余部分将由棋盘本身组成.它将有:
- 国际象棋棋盘的主要区域.如果用户指向棋子,它应该显示带边框的焦点.它也应该是键盘可访问的.客户将提供多个棋子(各种尺寸,样式和颜色)的精灵表,以允许用户改变游戏的外观.
- 棋盘将有标签指示列(从左到右:A,B,C,D,E,F,G和H)和行(从上到下:8,7,6,5,4,3,2) &1).
- 国际象棋棋盘和列/行标签将以1px黑色边框为边界,周围有8px填充.
- 随着玩家增加游戏的大小,棋盘应保持正方形,否则填充可用空间.
- 国际象棋棋盘后面的背景颜色应该是赭色,但在下面的模型中,我们将棋盘背后的区域设为绿色,以突出调整大小的行为.
前几天我正在参与线程图像/图形到一个形状,并通过Rectangle
迭代添加到图像来做一个黑客尝试获取图像的轮廓Area
.那很慢.
这个例子改为构建一个GeneralPath
并Area
从GP 创建.快多了.
左上角的图像是"源图像".右边的两个是处理轮廓的各个阶段.它们都有圆形边缘和三角形倾斜边缘的锯齿状边缘.
我希望获得一种能够消除或减少锯齿状的形状.
1234
1 **
2 **
3 ***
4 ***
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)
角落在:
1234
1 ****
2 ****
3 **
4 **
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)
角落在:
假设我们的路径具有显示的形状和列出的点,我想放下第一组的"内角"点,同时保留"内部角落的一对"(图像中的一对)第2位.
PathIterator
并建立一个新的GeneralPath
掉落奇异的内角 - 如果我能想出如何识别它们!).以下是要使用的代码:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
/* Gain …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的棋盘在JPanel
与GridLayout(8,8)
作为布局管理器.
我正在尝试为字段的列名和行号添加面板.
现在我已经创建了另一个面板BorderLayout
作为布局管理器,在这个面板中我添加了板BorderLayout.CENTER
.旁边的板本身我添加了一个面板GridLayout(0,8)
中BorderLayout.SOUTH
和面板GridLayout(8,0)
中BorderLayout.WEST
.行数完全放在电路板旁边,因为左侧JPanel中的行数与电路板中的行数相匹配,但列名称(A,B,C,D,E,F,G,H)在由于JPanel的原因,板下的JPanel放置不正确BorderLayout.WEST
.
如何制作带侧板的合适棋盘以显示场地编号/名称?
我已经尝试将南面板的布局设置为GridLayout(0,9)
第一个字段为空,但左面板的宽度不等于电路板中的每个字段,因此这不是一个好的解决方法.
我有一个JLabel的子类,它构成了我GUI的一个组件.我已经实现了将组件从一个容器拖放到另一个容器的能力,但没有任何视觉效果.我想让这个JLabel在项目从一个容器拖动到另一个容器期间跟随光标.我想我可以创建一个玻璃窗格并在那里绘制它.但是,即使我将组件添加到玻璃窗格,将组件设置为可见,并将玻璃窗格设置为可见,并将玻璃窗格设置为不透明,我仍然看不到该组件.我知道该组件有效,因为我可以将其添加到内容窗格并显示它.
如何将组件添加到玻璃窗格?
最后想出了如何让简单的例子工作.谢谢,@ akf.我能够使这个解决方案适应我原来的问题,允许我删除约60行Java2D代码,这些代码手动呈现JLabel的表示.
package test;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
public class MainFrame extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {
MainFrame mf = new MainFrame();
mf.setSize(400, 400);
mf.setLocationRelativeTo(null);
mf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
mf.setGlassPane(new JPanel());
JLabel l = new JLabel();
l.setText("Hello");
l.setBorder(new LineBorder(Color.BLACK, 1));
l.setBounds(10, 10, 50, 20);
l.setBackground(Color.RED);
l.setOpaque(true);
l.setPreferredSize(l.getSize());
//mf.add(l);
((JPanel)mf.getGlassPane()).add(l);
mf.getGlassPane().setVisible(true);
mf.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud) 在回答关于这些部分的另一个问题时,我对可能从系统中可用字体显示的Unicode字符获得的字形感到好奇.
当然,在典型的机器上有65,536个Unicode字符和250多种字体!让人想知道从哪里开始.什么是美妙的是一个应用程序.这允许我们浏览在列表中选择的..any字体中显示的Unicode代码点表.如果还有以下情况会很高兴:
这样的应用程序吗?存在?
它可能看起来很好..像这样的东西!
这是我的代码
import javax.swing.*;
import java.awt.*;
public class board2 {
JFrame frame;
JPanel squares[][] = new JPanel[8][8];
public board2() {
frame = new JFrame("Simplified Chess");
frame.setSize(500, 500);
frame.setLayout(new GridLayout(8, 8));
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
squares[i][j] = new JPanel();
if ((i + j) % 2 == 0) {
squares[i][j].setBackground(Color.black);
} else {
squares[i][j].setBackground(Color.white);
}
frame.add(squares[i][j]);
}
}
squares[0][0].add(new JLabel(new ImageIcon("rookgreen.png")));
squares[0][2].add(new JLabel(new ImageIcon("bishopgreen.png")));
squares[0][4].add(new JLabel(new ImageIcon("kinggreen.png"))); …
Run Code Online (Sandbox Code Playgroud)