标签: graphics2d

三角绘制方法

draw(Graphics g)在使用Java中的方法绘制三角形时遇到问题.我可以像这样绘制一个矩形:

public void draw(Graphics g) {
    g.setColor(colorFill);
    g.fillRect(p.x, p.y, width, height);
    g.setColor(colorBorder);
    g.drawRect(p.x, p.y, width, height);
    drawHandles(g);
Run Code Online (Sandbox Code Playgroud)

其中p代表"形状的左上角".我如何以相同的方式绘制三角形?

有人能给我一个标准三角形的例子吗?

java swing awt graphics2d

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

如何用Java中的Graphics2D旋转文本?

我想使用Graphics2D在JPanel上旋转文本..

我的代码是这样的:

double paso=d.width/numeroBarras;
        double alto=datos[i].valor;
        Font fBarras=new Font("Serif", Font.PLAIN, 15);
        g2.setFont(fBarras);
        Rectangle2D barra=new Rectangle2D.Double(x,d.height-alto,paso,alto);
        //g2.fill(barra);
        x+=paso;
        g2.draw(barra);
        g2.rotate(-Math.PI/2);
        g2.setColor(Color.BLACK);
        g2.drawString(datos[i].titulo,(float)alto,(float)paso)
Run Code Online (Sandbox Code Playgroud)

此方法必须在矩形上绘制一个矩形和一个文本,但是当我运行此方法时,所有图形都会旋转,我只想旋转文本.

谢谢 :)

java awt graphics2d

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

Java Graphics2D透明背景

我有一个Graphics2D对象,我想设置对象的背景.它有一个setBackground方法,它有一个Color参数.这样我就可以设置背景的颜色.

我的问题是:如何设置对象背景的透明度?我可以以某种方式告诉它完全透明吗?我可以以某种方式告诉它完全不透明吗?我可以告诉它有0.8透明度/不透明度吗?我该如何设置这些值?

我已经看到有INT预定义值叫TRANSLUCENTOPAQUE,但我不知道我该如何使用它们.

也许正确的用法是使用int参数调用Color的构造函数?

java transparency background graphics2d

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

将Graphics2D转换为Image或BufferedImage

我这里有点问题.

我有一个applet,用户可以在其中"绘制".为此,我使用java.awt.Graphics2D.但是,如何将用户绘制图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他什么?我不知道该怎么做.

谢谢.

java applet bufferedimage graphics2d

16
推荐指数
3
解决办法
5万
查看次数

Java:旋转图像

我需要能够单独旋转图像(在java中).到目前为止我唯一发现的是g2d.drawImage(image,affinetransform,ImageObserver).不幸的是,我需要在特定的点绘制图像,并且没有一个方法可以分别对图像进行旋转,并且2.允许我设置x和y.任何帮助表示赞赏

java swing image rotation graphics2d

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

旋转Java Graphics2D矩形?

我到处搜寻,我找不到答案.
如何在java中旋转Rectangle?

这是我的一些代码:

package net.chrypthic.Space;

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

public class Space extends JPanel implements ActionListener{
    Timer time;
    public Space()
    {
        setVisible(true);
        setFocusable(true);
        addMouseMotionListener(new ML());
        addMouseListener(new ML());
        addKeyListener(new AL());
        time=new Timer(5, this);
        time.start();
    }
    public void paint(Graphics g)
    {
        super.paint(g);
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor(Color.WHITE);
        Rectangle rect2 = new Rectangle(100, 100, 20, 20);

        g2d.draw(rect2);
        g2d.fill(rect2);
    }
    public void actionPerformed(ActionEvent ae) {
        repaint();
    }
    public class AL extends KeyAdapter
    {
        public void keyPressed(KeyEvent e) {
        }

        public void keyReleased(KeyEvent …
Run Code Online (Sandbox Code Playgroud)

java swing rotation graphics2d

15
推荐指数
3
解决办法
8万
查看次数

通过当前日期

似乎不可能修复Graphics2D缺少的代码,我必须设置动画的修复大小,否则一些开始外面的矩形490 x 490冻结或在屏幕上摇晃

我的SSCCE

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Random;
import java.util.Vector;
import java.util.regex.Pattern;
import javax.swing.*;
import javax.swing.table.*;

public class OneTwoThree implements Runnable {

    private String testS;
    private JFrame frame = new JFrame("frameTitle");
    private JScrollPane tblS = new JScrollPane();
    private JTable tbl;
    private Vector<String> rOrH;
    private long t1 = 0L;
    private long t2 = 0L;
    private AlphaChars aChars = new AlphaChars();
    private GradientViewPortOriginal tableViewPort;
    private JViewport viewport = new JViewport();
    private Random random …
Run Code Online (Sandbox Code Playgroud)

java swing graphics2d jviewport

15
推荐指数
1
解决办法
2464
查看次数

为什么Firefox对待Helvetica与Chrome不同?

Helvetica中呈现的文本的垂直位置及其内容区域的大小因Firefox和Chrome for Mac而异.例如,在Chrome中,如果行高与font-size相同,则会下移下划线.

演示浏览器之间不同的垂直字符位置

(我在这张照片中调整了块元素的位置 - 保持基线一致 - 以说明尺寸和文本定位的差异).如果你有一台Mac,你可以在这个JS Bin中看到我在说什么.

现在,我并没有直接对如何解决这个特定的差异感兴趣.我意识到手动调整的重置样式表试图消除或消除差异,但我特别感兴趣的是导致这些浏览器首先呈现不同的因素.

我在这里做一些假设:

  • 对于字体的渲染以及标准盒模型中字形的大小和位置,存在标准,但可能在它们如何交互方面未指定.

  • 浏览器制造商对上述标准的解释存在错误,这可能会影响文本的大小,定位和呈现方式.

  • 对于这些特定的浏览器,许多设计讨论和实际实现都是以某种形式公开的.因此,如果有人知道在哪里看,就可以了解这种差异的来源.

  • 两个浏览器都在同一个地方开始 - 标记,样式和字体定义在它们之间是一致的.在某些时候,他们在如何利用这些产生最终产出方面存在分歧.

因此,我的具体问题是:在这个过程中,这种分歧发生在哪里,是什么导致它发生?

我觉得,凭借这些知识,我可以更好地理解如何纠正这种差异.在这种情况下,特别是在我将来可能遇到的类似情况中.

css fonts postscript cross-browser graphics2d

14
推荐指数
1
解决办法
2092
查看次数

如何在JTextPane页脚中打印总页数?

我已经搜索了这个答案的高低,并且空白了.

我需要使用一个页脚打印JTextPane的内容,该页脚显示"<m>页面的页面<n>".在Java中似乎不可能做这个简单的功能.

当我得到Printable时,我可以设置页脚打印页码,例如


     String header = "whatever";
     String footer = " Page - {0}";
     printText(textPane.getPrintable(new MessageFormat(header), 
        new MessageFormat(footer)));

但是,在调度打印机对话框之前,似乎无法找到将要打印的总页数.我认为这是因为该对话框用于在页面发送到打印机之前格式化页面.打印机对话框始终显示只有一(1)页.

所以,我开始编写一个例程,它将遍历JTextPane文档并通过从print()方法中的PageFormat获取可视区域来计算页面,然后使用每行的高度(fontsize)来计算每行中的行数.页面,然后计算页数.eg


      int maxh = (int) pf.getImageableHeight ();
      Element section = doc.getDefaultRootElement();
      for (int i=0; i<paraCount; i++) 
      {
        Element e = section.getElement(i);
        // Get the attributeSet for this paragraph (Element)
        // The attributeSet contains the Styles, which contain
        // the fonts etc.
        AttributeSet attrs = e.getAttributes();
        int fontsize = StyleConstants.getFontSize(attrs);

        // .... add up the lines and count filled pages ...
      } …

java printing swing jtextpane graphics2d

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

为什么java.awt.Graphics.drawLine特别慢?

我正在尝试实现以下'网格'布局.

CompleteImage

该类正在扩展java.awt.Canvas,并在paint函数中绘制这些形状(或行).为什么选择帆布?点击这里,尝试初始化做类似的事情.

更新了MCVE代码以获取上述"布局":

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

@SuppressWarnings("serial")
public class SO_MCVE extends JPanel {

    private DrawingCanvas _drawingCanvas = null;

    private JButton repaintBtn;

    public SO_MCVE() {
        super(new BorderLayout());

        _drawingCanvas = new DrawingCanvas();
        _drawingCanvas.setSize(new Dimension(600, 600));

        JLabel repaintLabel = new JLabel(
                "<html><div style=\"text-align: center;\">" +
                "REPAINT</html>"); …
Run Code Online (Sandbox Code Playgroud)

java swing graphics2d

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