相关疑难解决方法(0)

代码和标记Q&A的示例图像

在准备涉及图像的MCVE/SSCCE时,直接访问图像很有用.

覆盖大多数问题的图像类型包括:多种颜色或形状的小图像,带/不带透明度的动画GIF,带有"成对"图片的JPEG,可用于图像过渡,图块集,精灵表等.

是否有任何小型(30KB以下),现场,许可证和免版税图像,我们可以为这些类型的示例进行热链接?

javascript css java image

127
推荐指数
1
解决办法
5127
查看次数

剪出文字形状的图像

我需要在另一个图像中剪切出文本形状的图像.我认为它最好显示在图像中.

这是一张猫的照片:

一只好的猫的照片

这是我要删除的文字:

文本切出猫照片

生成的图像是这样的:

导致猫照片的剪切

文本图像将始终为黑色并具有透明背景,并且生成的剪切图案也应具有透明背景.两个输入图像也将具有相同的大小.

java image image-processing

43
推荐指数
4
解决办法
1万
查看次数

将文本内容转换为图像

有没有允许将文本内容转换为图像文件的Java库?我只知道ImageMagick(在这种情况下是JMagick)但我不想安装任何外部二进制文件(我的应用程序将在Tomcat服务器中部署为.war文件,因此我不希望任何其他依赖项比Java更多) .

例如,从字符串"Hello",我想生成这个简单的图像:

字符串

java fonts text image awt

27
推荐指数
2
解决办法
5万
查看次数

制作一个强大,可调整大小的Swing Chess GUI

我将如何制作这款可调整大小的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填充.
  • 随着玩家增加游戏的大小,棋盘应保持正方形,否则填充可用空间.
  • 国际象棋棋盘后面的背景颜色应该是赭色,但在下面的模型中,我们将棋盘背后的区域设为绿色,以突出调整大小的行为.

在游戏开始之前,最小尺寸的国际象棋冠军

在游戏开始之前,ChessChamp以最小尺寸

激活新游戏按钮后,最小尺寸的国际象棋冠军

激活新游戏按钮后,最小尺寸的国际象棋冠军

国际象棋冠军比最小尺寸更宽

ChessChamp比最小尺寸拉伸得更宽

国际象棋冠军比最小尺寸高

国际象棋冠军比最小尺寸高

java user-interface swing layout-manager

25
推荐指数
2
解决办法
3万
查看次数

平滑锯齿状路径

前几天我正在参与线程图像/图形到一个形状,并通过Rectangle迭代添加到图像来做一个黑客尝试获取图像的轮廓Area.那很慢.

这个例子改为构建一个GeneralPathArea从GP 创建.快多了.

用于处理的样本图像

左上角的图像是"源图像".右边的两个是处理轮廓的各个阶段.它们都有圆形边缘和三角形倾斜边缘的锯齿状边缘.

我希望获得一种能够消除或减少锯齿状的形状.

在ASCII艺术中.

情况1:

  1234
1 **
2 **
3 ***
4 ***
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)

角落在:

  • (2,3)内角
  • (3,3)
  • (3,5)内角
  • (4,5)

案例2:

  1234
1 ****
2 ****
3 **
4 **
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)

角落在:

  • (4,2)
  • (2,2)内角
  • (2,5)内角
  • (4,5)

假设我们的路径具有显示的形状和列出的点,我想放下第一组的"内角"点,同时保留"内部角落的一对"(图像中的一对)第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)

java image image-processing java-2d edge-detection

13
推荐指数
1
解决办法
5823
查看次数

使用JPanel创建一个Chess板

我有一个简单的棋盘在JPanelGridLayout(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)第一个字段为空,但左面板的宽度不等于电路板中的每个字段,因此这不是一个好的解决方法.

java swing chess layout-manager grid-layout

12
推荐指数
1
解决办法
7万
查看次数

将组件放在Glass Pane上

我有一个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)

java swing glasspane

10
推荐指数
3
解决办法
1万
查看次数

字符显示/搜索Unicode字符

在回答关于这些部分的另一个问题时,我对可能从系统中可用字体显示的Unicode字符获得的字形感到好奇.

当然,在典型的机器上有65,536个Unicode字符和250多种字体!让人想知道从哪里开始.什么是美妙的是一个应用程序.这允许我们浏览在列表中选择的..any字体中显示的Unicode代码点表.如果还有以下情况会很高兴:

  • 一个微调器,允许我们跳转到任何感兴趣的代码点.
  • 列表中不太模糊的Unicodes的名称,带有文本搜索可编辑组合.
  • 有关特定选定Unicode点的详细信息,包括:
    • 字符或字形的大显示,所以我们可以注意它.
    • 可以显示它的字体列表.
    • 代码点的属性.

这样的应用程序吗?存在?

它可能看起来很好..像这样的东西!

Unicode字形浏览器

java unicode fonts awt

7
推荐指数
1
解决办法
798
查看次数

在java的国际象棋棋盘

这是我的代码

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)

java chess

3
推荐指数
1
解决办法
4万
查看次数