我是否认为Oracle已经弃用了Swing而JavaFx 2.0是它的官方替代品?
这对我来说是有道理的,因为对于oracle而言,维持两个竞争api的开发似乎有些愚蠢,这几乎完全相同.然而,Oracle已经在java 7 swing api中引入了半透明窗口,异形窗口等增强功能.我认为这可能是出于过渡目的,但如果有人能够了解当前"标准"或"最佳实践"对于新应用程序的选择 - 我是否真的很感激 - Swing或javafx 2.0?未回答问题的另一个来源似乎是Java 2D的命运.是否值得掌握该API现在另一个图形引擎,Prism,uunderlies JavaFx 2.0?
非常感谢,Marc
我想将大图像(18000 x 18000)加载到我的应用程序中.如果我使用BufferedImage类型int_rgb,我需要大约1235mb的堆内存来加载.这是一个非常大的内存量,最终用户可能会有更少的内存(1GB或更少).
在我的开发PC上,当我从MyEclipse IDE加载图像时,它会抛出内存不足Exception.当我将我的代码打包到一个可执行jar并在Eclipse外部的PC上运行时,它仍然会抛出异常.
如何在不使用1235mb内存的情况下使用缓冲图像将如此大的图像加载到我的应用程序中?有没有一个技巧,比如将图像分成像图像分割这样的较小部分?
我在SO上找到了这个帖子,但它对我没用; 我想加载图像BufferedImage,然后Panel使用Graphics该类绘制它.
(使用java 8)鉴于图像用户需要能够以像素为单位指定最小/最大图像大小,并且还需要以kbs为单位指定已保存图像的最大大小,图像将保存为jpg.
所以我通过调整缓冲图像的大小来完成第一个工作:
public static BufferedImage resizeUsingImageIO(Image srcImage, int size)
{
int w = srcImage.getWidth(null);
int h = srcImage.getHeight(null);
// Determine the scaling required to get desired result.
float scaleW = (float) size / (float) w;
float scaleH = (float) size / (float) h;
MainWindow.logger.finest("Image Resizing to size:" + size + " w:" + w + ":h:" + h + ":scaleW:" + scaleW + ":scaleH" + scaleH);
//Create an image buffer in which to paint on, create as an opaque …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Java游戏引擎(http://victoryengine.org),我一直在尝试生成带有红色/蓝色眼镜的深度"3D"图像.我正在使用Java2D进行图形处理.
我创造了一些有效的东西,但速度很慢(通过手动复制像素值和类似的东西).
我需要的是两个BufferedImages(一个用于左眼,一个用于右侧)并将它们组合成一个(另一个缓冲区或直接连接到屏幕).对于一个我只想要红色通道,而另一个我想要绿色和蓝色通道.最快的方法是什么?
我有一个TYPE_INT_BGR类型的BufferedImage.我需要与另一个BufferedImage进行逐像素比较,以计算两个图像之间的"距离".我有一些有用的东西,但很慢.我从"参考"图像中获取一个像素,将其分解为RGB字节:
int pixel = referenceImage.getRGB(col, row);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
Run Code Online (Sandbox Code Playgroud)
我将r/g/b值与候选图像的相应像素进行比较,并将差值求平方.
有没有更快的方法来进行这种比较?窥视JRE源代码,我看到BufferedImage.getRGB()实际上是将光栅中的RGB值组合在一起,这对我来说是浪费的,因为我只是将其分解为字节.
我将尝试直接尝试,但我想知道是否有更好的方法来做到这一点,无论是通过我可能错过的Java或第三方API.
将Point2D.Double x距离移近另一个Point2D.Double的最佳方法是什么?
编辑:尝试编辑,但所以进行维护.不,这不是功课
我需要将一个平面(A)移向跑道(C)的末端并将其指向正确的方向(角度a).
alt text http://img246.imageshack.us/img246/9707/planec.png
这是我到目前为止所拥有的,但它看起来很混乱,通常的做法是什么?
//coordinate = plane coordinate (Point2D.Double)
//Distance = max distance the plane can travel in this frame
Triangle triangle = new Triangle(coordinate, new Coordinate(coordinate.x, landingCoordinate.y), landingCoordinate);
double angle = 0;
//Above to the left
if (coordinate.x <= landingCoordinate.x && coordinate.y <= landingCoordinate.y)
{
angle = triangle.getAngleC();
coordinate.rotate(angle, distance);
angle = (Math.PI-angle);
}
//Above to the right
else if (coordinate.x >= landingCoordinate.x && coordinate.y <= landingCoordinate.y)
{
angle = triangle.getAngleC();
coordinate.rotate(Math.PI-angle, distance);
angle = …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我如何在Java 2d中找到文本吗?
这是代码,它绘制了一列自然对齐的文本.
Font yFont = new Font("Arial", Font.BOLD, 13);
interval = 0;
g2d.setFont(yFont);
for (String l : binLabels) {
g2d.drawString(l, 0, (135 + interval));
interval = interval + 15;
}
Run Code Online (Sandbox Code Playgroud)
快把我逼疯了.谢谢你们
slothishtype
我的数学不好.
我有2个点,A(x1, y1)而B(x2, y2)在2D.
我需要在R(半径)处创建从点A到B弯曲的虚拟路径,然后返回描述此弯曲路径的点阵列,而不是所有可能彼此相距的D(距离).
在Java中我需要一个像这样的方法:
private ArrayList<PointF> generateCurve(PointF pFrom,PointF pTo,float pRadius,float pMinDistance){
ArrayList<PointF> pOutPut = new ArrayList<PointF>();
// ...generate result to pOutPut
return pOutPut;
}
Run Code Online (Sandbox Code Playgroud)
这该怎么做 ?
我正在编写一个程序,当点击鼠标时,将绘制一个圆圈.到目前为止我写的下面的代码.
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.event.*;
import java.awt.geom.*;
public class test extends JFrame implements ActionListener, MouseListener {
Shape circle = new Ellipse2D.Float(10, 10, 10, 10);
public test () {
setSize(250,150);
addMouseListener(this);
}
public static void main(String[] args) {
//TODO code application logic here
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
test frame = new test();
frame.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent ae) {
}
public void drawCircle(int x, int y) …Run Code Online (Sandbox Code Playgroud) 我正在使用Java Graphics而且我一直在变得"丑陋".
这是我的Java程序所做的

这是在Matlab中做的同样的事情 
我认为Java显然不像Matlab那样"好看",特别是在圆的边缘.请注意,这与分辨率无关......这些图像的大小几乎相同.另请注意,我已经设置了渲染提示.
这是一个独立的主要功能,你可以运行来测试这个.
package test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
public class SimplePaint02 {
private static final int LINE_THICKNESS = 4;
private static final int LINE_GAP = 10;
private Color lineColor = Color.red;
public static void main(String[] args) {
new SimplePaint02();
}
public SimplePaint02() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try …Run Code Online (Sandbox Code Playgroud)