标签: graphics2d

Swing HTML drawString

我正在尝试为特定目的创建一些特殊组件,在该组件上我需要绘制一个HTML字符串,这是一个示例代码:

 public class MyComponent extends JComponent{
     public MyComponent(){
        super();
     }

     protected void paintComponent(Graphics g){
        //some drawing operations...
        g.drawString("<html><u>text to render</u></html>",10,10);
     }
 }
Run Code Online (Sandbox Code Playgroud)

不幸的是,drawString方法似乎没有识别HTML格式,它愚蠢地绘制字符串就像它一样.

有没有办法让这项工作?

html java swing jcomponent graphics2d

10
推荐指数
6
解决办法
8619
查看次数

适用于2D游戏引擎的Graphics2D包装器

我正在尝试编写一个2D游戏引擎,我正在尝试实现一个视口系统,这样当我在某个视口中绘图时,游戏坐标将转换为屏幕坐标,而无需手动进行转换.

我想要做的是创建一个Graphics2D添加setViewport方法的包装器.

我看到的方式有两种选择:

  1. 创建一个具有a实例Graphics2D并且具有与Graphics2Dplus 相同的方法的类,setViewport并且只调用Graphics2D实例上的相应方法.

  2. 子类Graphics2D,只需添加一个setViewport方法,然后只是转换Graphics2D为这个新类

我试过#2,因为#1似乎非常不切实际但遇到了一个ClassCastException.我无法演员GraphicsGraphics2D这个新班级.当我打印的图形对象投(之前GraphicsGraphics2D),两者出来的sun.java2d.SunGraphics2D.

尝试子类化和强制转换时,我做了一些根本错误的事情吗?如果没有,我该如何解决这个问题?

java inheritance graphics2d

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

Java:检测图像格式,调整大小(缩放)并保存为JPEG

这是我的代码,它的实际工作,不完美,但它的问题是,调整大小的缩略图未粘贴在白色绘制的矩形,打破了图像纵横比,这里是代码,可能有人建议我修复好吗,拜托?

谢谢

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ImageScalerImageIoImpl implements ImageScaler {

 private static final String OUTPUT_FORMAT_ID = "jpeg";

 // Re-scaling image
 public byte[] scaleImage(byte[] originalImage, int targetWidth,
   int targetHeight) {

  try {
   InputStream imageStream = new BufferedInputStream(
     new ByteArrayInputStream(originalImage));
   Image image = (Image) ImageIO.read(imageStream);

   int thumbWidth = targetWidth;
   int thumbHeight = targetHeight;

   // Make sure …
Run Code Online (Sandbox Code Playgroud)

java resize image graphics2d javax.imageio

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

如何使像素完美Line2D - Graphics2D

G'day,我有JPanel,上面有一些Line2D对象.问题是当我画这条线时,它不会像我想要的那样出现.线条不平滑,很难用词来解释,所以我发布了一张图片,

在此输入图像描述

缩放区域,

在此输入图像描述

如何让它们看起来更光滑而不是皱纹.

谢谢

java swing graphics2d

9
推荐指数
1
解决办法
801
查看次数

在JFrame上绘制一条线

我正在尝试使用Graphics2D 绘制一条线但是然后该线出现在所有其他组件中,JFrame从而使它们不可见.我该如何解决这个问题?

这是代码:

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

class Success extends JFrame{

    public Success(){
        JPanel panel=new JPanel();
        getContentPane().add(panel);
        setSize(450,450);

        JButton button =new JButton("press");
        panel.add(button);
    }

    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        Line2D lin = new Line2D.Float(100, 100, 250, 260);
        g2.draw(lin);
    }

    public static void main(String []args){
        Success s=new Success();
        s.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing jframe graphics2d

9
推荐指数
1
解决办法
5万
查看次数

了解BufferStrategy

我是java的新手.我想做一个游戏.经过大量的研究,我无法理解bufferstrategy如何工作..我知道基础知识..它创建了一个屏幕外的图像,你可以在以后放入你的windows对象..我得到了这个

public class Marco extends JFrame {
    private static final long serialVersionUID = 1L;
    BufferStrategy bs; //create an strategy for multi-buffering.

    public Marco() {
       basicFunctions(); //just the clasics setSize,setVisible,etc
       createBufferStrategy(2);//jframe extends windows so i can call this method 
       bs = this.getBufferStrategy();//returns the buffer strategy used by this component
    }

   @Override
   public void paint(Graphics g){
      g.drawString("My game",20,40);//some string that I don't know why it does not show
      //guess is 'couse g2 overwrittes all the frame..
      Graphics2D g2=null;//create a child object of …
Run Code Online (Sandbox Code Playgroud)

java graphics2d

9
推荐指数
1
解决办法
2万
查看次数

使用getGraphics()绘制对象而不扩展JFrame

如何在没有类(扩展JFrame)的情况下绘制对象?我找到了getGraphics方法,但它没有绘制对象.

import javax.swing.*;
import java.awt.*;
public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setSize(600, 400);

        JPanel panel = new JPanel();
        frame.add(panel);

        Graphics g = panel.getGraphics();
        g.setColor(Color.BLUE);
        g.fillRect(0, 0, 100, 100);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing graphics2d paintcomponent

9
推荐指数
1
解决办法
5万
查看次数

Graphics和Graphics2D之间的区别?

GraphicsGraphics2D有什么区别?
Graphics2D是否扩展了Graphics?

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawRect(25, 25, 20, 20); //use Graphics to paint rectangle
    Graphics2D g2 =(Graphics2D)g;
    g2.drawRect(0, 0, 20, 20); // use Graphics2D to paint rectangle
}
Run Code Online (Sandbox Code Playgroud)

java graphics swing graphics2d

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

Font.createFont将文件保存在临时目录中

下面的代码可以正常工作,但每次运行时都会将字体文件的副本留在临时目录中.这些文件名为+ ~JF7154903081130224445.tmp,其中每个创建的文件的数字似乎是随机的.

InputStream fontStream = this.getClass().getResourceAsStream("handsean.ttf");
Font baseFont = Font.createFont(Font.TRUETYPE_FONT, fontStream);
fontStream.close();
Run Code Online (Sandbox Code Playgroud)

我在sun.com的论坛和网络上的其他资源中发现了几年的讨论,这被认为是JDK中的一个错误,从1.5.0_06升级到1.5.0_08可以解决问题; 但是,我使用的版本是更高版本(1.6.0_13).

我尝试通过在字体相关操作完成后删除文件来解决问题,但此时文件被锁定.只有在Web应用程序停止后才能删除这些文件.

有人有解决方案吗?

java fonts temporary-files graphics2d

8
推荐指数
1
解决办法
3705
查看次数

使用JUnit测试图形生成

我正在使用Java的Graphics2D来生成图形的图形表示.我也在使用ImageIO来编写PNG文件.(ImageIO.write(image, "png", out);)

我想知道如何编写JUnit测试来测试生成的图形是否符合预期.我可以预先生成PNG文件,但如果在不同的机器上字体有点不同怎么办?

java junit graphics2d

8
推荐指数
1
解决办法
2526
查看次数