我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代表"形状的左上角".我如何以相同的方式绘制三角形?
有人能给我一个标准三角形的例子吗?
我想使用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)
此方法必须在矩形上绘制一个矩形和一个文本,但是当我运行此方法时,所有图形都会旋转,我只想旋转文本.
谢谢 :)
我有一个Graphics2D对象,我想设置对象的背景.它有一个setBackground方法,它有一个Color参数.这样我就可以设置背景的颜色.
我的问题是:如何设置对象背景的透明度?我可以以某种方式告诉它完全透明吗?我可以以某种方式告诉它完全不透明吗?我可以告诉它有0.8透明度/不透明度吗?我该如何设置这些值?
我已经看到有INT预定义值叫TRANSLUCENT和OPAQUE,但我不知道我该如何使用它们.
也许正确的用法是使用int参数调用Color的构造函数?
我这里有点问题.
我有一个applet,用户可以在其中"绘制".为此,我使用java.awt.Graphics2D.但是,如何将用户绘制图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他什么?我不知道该怎么做.
谢谢.
我需要能够单独旋转图像(在java中).到目前为止我唯一发现的是g2d.drawImage(image,affinetransform,ImageObserver).不幸的是,我需要在特定的点绘制图像,并且没有一个方法可以分别对图像进行旋转,并且2.允许我设置x和y.任何帮助表示赞赏
我到处搜寻,我找不到答案.
如何在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) 似乎不可能修复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) Helvetica中呈现的文本的垂直位置及其内容区域的大小因Firefox和Chrome for Mac而异.例如,在Chrome中,如果行高与font-size相同,则会下移下划线.

(我在这张照片中调整了块元素的位置 - 保持基线一致 - 以说明尺寸和文本定位的差异).如果你有一台Mac,你可以在这个JS Bin中看到我在说什么.
现在,我并没有直接对如何解决这个特定的差异感兴趣.我意识到手动调整的重置样式表试图消除或消除差异,但我特别感兴趣的是导致这些浏览器首先呈现不同的因素.
我在这里做一些假设:
对于字体的渲染以及标准盒模型中字形的大小和位置,存在标准,但可能在它们如何交互方面未指定.
浏览器制造商对上述标准的解释存在错误,这可能会影响文本的大小,定位和呈现方式.
对于这些特定的浏览器,许多设计讨论和实际实现都是以某种形式公开的.因此,如果有人知道在哪里看,就可以了解这种差异的来源.
两个浏览器都在同一个地方开始 - 标记,样式和字体定义在它们之间是一致的.在某些时候,他们在如何利用这些产生最终产出方面存在分歧.
因此,我的具体问题是:在这个过程中,这种分歧发生在哪里,是什么导致它发生?
我觉得,凭借这些知识,我可以更好地理解如何纠正这种差异.在这种情况下,特别是在我将来可能遇到的类似情况中.
我已经搜索了这个答案的高低,并且空白了.
我需要使用一个页脚打印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.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) graphics2d ×10
java ×9
swing ×6
awt ×2
rotation ×2
applet ×1
background ×1
css ×1
fonts ×1
image ×1
jtextpane ×1
jviewport ×1
postscript ×1
printing ×1
transparency ×1