Tag: 图形

如何处理不同计算机之间的Java 2D性能变化?

我一直在Windows上用Java设计一款纸牌游戏。 它在我的笔记本电脑和其他一些系统上运行得非常好,但在许多其他系统(甚至是Mac和Windows上的一些新系统)上,动画速度非常慢。 我发现Java用户界面工具包是迄今为止最好的资源,但未能取得重大改进。 我正在使用AWT / Swing库。 题: 看看我的游戏 ,(<1.5Mb),在某些计算机(类似规格)上,性能似乎远远低于笔记本电脑上的性能? 整个应用程序是事件驱动的,我已经完成了大部分优化,我认为在实现的情况下可以完成。 我感觉它与记忆有关。 我创建(兼容),然后在开始时将我的所有图像存储到一个数组中,然后在那里引用它们。 注意:我决定制作这个游戏,以便我可以学习和练习一些新的想法,所以我不只是想分享它 – 我真的很想知道这里发生了什么。

Java:没有awt创建图形?

是否有任何库可以在不使用AWT的情况下创建图形? 我需要的是简单的绘图function(如画线)和文本绘图function,以便在内存中为Google应用引擎应用创建图形。 App引擎不支持AWT。 谢谢!

需要一种缩放字体以适合矩形的方法

我刚刚编写了一些代码来缩放字体以适应矩形(长度)。 它从18宽度开始并向下迭代直到它适合。 这似乎非常低效,但我找不到一种非循环方式来做到这一点。 此行适用于可缩放的游戏网格中的标签,因此我无法看到解决方案(包裹,切断和延伸超过矩形都是不可接受的)。 它实际上非常快,我正在为数百个矩形做这个,而且速度足以让它减慢触摸速度。 如果没有人提出更好的东西,我只会从表中加载起始猜测(因此它比18更接近)并使用它 – 除了延迟效果很好。 public Font scaleFont(String text, Rectangle rect, Graphics g, Font pFont) { float nextTry=18.0f; Font font=pFont; while(x > 4) { font=g.getFont().deriveFont(nextTry); FontMetrics fm=g.getFontMetrics(font); int width=fm.stringWidth(text); if(width <= rect.width) return font; nextTry*=.9; } return font; }

Graphics2D:白底黑?

我确定这是一个非常愚蠢的问题,但我找不到答案,我对Java2D API没有经验。 我正在尝试创建一个图像并将其写入GIF或PNG,我希望它在白色背景上使用黑色笔。 如果我没有设置任何颜色,我会变成黑色的白色。 如果我使用setPaint()(用于后续绘制操作),我会用整个canvas重新绘制该颜色。 以下示例将整个事件呈现为黑色。 示例是在Scala中,但您明白了。 随便用Java回答! val bi = new BufferedImage(200, 400, BufferedImage.TYPE_BYTE_BINARY ) val g = bi.createGraphics g.setBackground(Color.WHITE) g.setPaint(Color.BLACK) g.draw(new Rectangle(10, 10, 30, 20))

Android – Zoomed View翻译限制

我有一个简单的自定义视图和缩放手势检测器实现为Pinch(缩放)手势,就像这样(在StackOverflow上也发现它): import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.view.View; public class MyImageView extends View { private static final int INVALID_POINTER_ID = -1; private Drawable mImage; private float mPosX; private float mPosY; private float mLastTouchX; private float mLastTouchY; private int mActivePointerId = INVALID_POINTER_ID; private ScaleGestureDetector mScaleDetector; private float […]

透明背景的LWJGL窗口?

我想创建一个窗口,使得没有“黑色背景”区域,而是您可以看到任何其他打开的窗口,等等。 也就是说,渲染场景而只渲染场景,不留任何帧,也不留下背景区域。 我读过一个方法,涉及渲染到隐藏的OpenGL窗口并在内存中缓冲它,创建透明的分层窗口,以及从内存复制到透明窗口。 显然这是非常cpu /内存密集型的,所以我想知道在Java和LWJGL中是否有更好的方法可以做到这一点?

Java交叉孵化纹理

任何人都知道如何在Java中重新创建交叉散列纹理? 下面的C#代码显示了如何为.NET框架实现此目的。 Java片段很接近,但我无法正确地将线条旋转45度。 C# HatchBrush crossHatch = new HatchBrush(HatchStyle.Cross, somecolor, somecolor); Java的 BufferedImage bufferedImage = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = bufferedImage.createGraphics(); g2.setColor(Color.BLUE); g2.fillRect(0, 0, 5, 5); g2.setColor(pinColor); g2.fillOval(0, 0, 5, 5); // paint with the texturing brush Rectangle2D rect = new Rectangle2D.Double(0, 0, 5, 5); g2d.setPaint(new TexturePaint(bufferedImage, rect)); g2d.fill(shape); 提前致谢。

使用贝塞尔曲线进行圆近似

我有2个关于贝塞尔曲线的问题,并使用它们来近似圆的部分。 给定单位圆弧(1,0) – >(cos(a),sin(a)),其中0 <a <pi / 2,它将导致该弧的良好近似,以找到贝塞尔曲线的控制点p1 ,p2通过求解要求B(1/3)=(cos(a / 3),sin(a / 3))和B(2/3)=(cos(2a / 3),sin(图2a / 3))。 (换句话说,要求贝塞尔曲线穿过弧中两个均匀间隔的点)。 如果我们有一个仿射变换A,它将圆弧转成椭圆弧,变换的控制点Ap0,Ap1,Ap2,Ap3是否定义了椭圆弧的良好贝塞尔近似? 当然,p0和p3是曲线的起点和终点:(1,0)和(cos(a),sin(a))。 谢谢

java中的条形图

我想改变每个条的高度(例如,红色部分为10,蓝色部分为20)。 但是当我增加高度值时,它将从底部增加图表,而我希望更改为顶部! 你知道它有什么问题吗? import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JPanel; public class ChartPanel extends JPanel { private double[] values; private String[] names; private String title; public ChartPanel(double[] v, String[] n, String t) { names = n; values = v; title = t; […]

如何使用java制作图像的渐变边框?

如何将图像边框设为渐变。 我google了很多,但没有找到正确的建议。 任何人都可以帮助我…… 有任何建议请……