Tag: 图形

在Java中,是否可以将BufferedImage转换为IMG数据URI?

我用以下示例代码创建了一个图形图像。 BufferedImage bi = new BufferedImage(50,50,BufferedImage.TYPE_BYTE_BINARY); Graphics2D g2d = bi.createGraphics(); // Draw graphics. g2d.dispose(); // BufferedImage now has my image I want. 此时我有BufferedImage,我想将其转换为IMG数据URI。 这可能吗? 例如..

Java创建浮雕(红/蓝图像)

我正在编写一个Java游戏引擎( http://victoryengine.org ),我一直在尝试生成带有红色/蓝色眼镜的深度“3d”图像。 我正在使用Java2D进行图形处理。 我创造了一些有效的东西,但速度很慢(通过手动复制像素值和类似的东西)。 我需要的是两个BufferedImages(一个用于左眼,一个用于右侧)并将它们组合成一个(另一个缓冲区或直接连接到屏幕)。 对于一个我只想要红色通道,而另一个我想要绿色和蓝色通道。 最快的方法是什么?

如何通过矩形之间的相交来检查碰撞是否有效?

编辑:这里是完整的代码: https : //dl.dropboxusercontent.com/u/65678182/assignment1.rar任何可能的帮助非常感谢! 我正在尝试制作突破游戏的副本,但我在检查两个物体(球和桨)是否相交时遇到问题。 我现在有这种碰撞检测方法: public static void handleCollisions() { System.out.println(ball.getBounds()); // just to check that they System.out.println(paddle.getBounds()); //are there and moving correct if (ball.getBounds().intersects(paddle.getBounds())) { System.out.println(“collision”); } } 我很确定getBounds的工作原理应该是因为我从println获得这些输出:java.awt.Rectangle [x = 393,y = 788,width = 14,height = 14] java.awt.Rectangle [x = 350,Y = 350,宽度= 100,高度= 10] getBounds code: public static Rectangle getBounds() { […]

使用KeyListener移动矩形

我正在尝试使用KeyListener移动一个矩形。 我见过其他人使用相同的代码但由于某种原因我不能让它移动。 现在矩形确实出现了。 如果有什么东西我不知道,我不确定我是否忘了什么。 这是我的代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.Graphics; public class roomwars extends JPanel implements ActionListener, KeyListener { //public JPanel pane; public JFrame frame; public JButton start, help; public JTextField box; int x=0, y=0, velx =0, vely =0; Timer t = new Timer(5, this); public void run(){ frame = new JFrame(“ROOM […]

Java分区表面成小方块

我想知道是否有任何算法做这样的事情: 给定一个特定的表面,它将它分成相同大小的较小矩形。 像这个示例图: 灰色区域是表面,红色方块是分区本身。 我在想是否有一种优化的方法来做到这一点。 一个非常糟糕的方法是在所有像素中使用for循环并检查是否有特定点的矩形,如果没有,将创建一个矩形,依此类推。 也许有人知道已经完成的算法? 还是更好的解决方案? 非常感谢提前;)

使用Android Paint类中的PorterDuffXfermode更改位图的亮度/变暗强度

好的,我的原始问题已经改变了。 我如何改变这样的事情的强度? DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 在我梦想的世界里它会像这样工作 DayToNight.setXfermode(new PorterDuffXfermode(Mode.DST_IN(10))); 10是一个强度水平。 一个例子是,如果我有一个闪烁的蜡烛,当蜡烛燃烧明亮时,我想要我绘制到屏幕上的位图以保持其原始颜色和亮度,当它闪烁时,我希望位图几乎变黑,我想要当灯光变暗时,使位图变暗。 我有方程式,计时器和所有这些,但不是如何实际应用它来改变颜色/亮度。 也许燃烧图像是我正在寻找的? 我只是想改变轻盈哈哈。 我觉得使用paint.setShader可能是一个解决方案,但这方面的信息非常有限,我能够找到。 任何帮助,将不胜感激。 编辑:要清楚,我正在寻找一种方法来缩小/缩小位图,因为我将它们绘制到canvas上

纹理不能正确拉伸。 为什么会这样?

我正在使用LWJGL和Slick框架将Textures加载到我的OpenGL应用程序中。 我正在使用这个图片: 这个代码导入并利用纹理: flagTexture = TextureLoader.getTexture(“PNG”, ResourceLoader.getResourceAsStream(“japan.png”)); …… flagTexture.bind(); GL11.glColor3f(1.0f, 1.0f, 1.0f); GL11.glPushMatrix(); GL11.glTranslatef(0.0f, 0.0f, -10.0f); GL11.glBegin(GL11.GL_QUADS); GL11.glTexCoord2f(0.0f, 0.0f); GL11.glVertex2f(0.0f, 0.0f); GL11.glTexCoord2f(1.0f, 0.0f); GL11.glVertex2f(2.5f, 0.0f); GL11.glTexCoord2f(1.0f, 1.0f); GL11.glVertex2f(2.5f, 2.5f); GL11.glTexCoord2f(0.0f, 1.0f); GL11.glVertex2f(0.0f, 2.5f); GL11.glEnd(); GL11.glPopMatrix(); 但最终结果是: 我没有使用任何特殊设置,如GL_REPEAT或类似的东西。 这是怎么回事? 如何使纹理填充给定的顶点?

如何在Java 3D中旋转对象?

我有一个使用以下代码在Java 3D中绘制的Cone: Cone cone = new Cone(2f, 3f); Transform3D t3d = new Transform3D(); TransformGroup coneTransform = new TransformGroup(t3d); coneTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); t3d.setTranslation(new Vector3f(0f,0f,0f); coneTransform.setTransform(t3d); coneTransform.addChild(cone); this.addChild(coneTransform); 假设我的锥体位于点(1,1,1),我希望锥体的尖端指向一条穿过(0,0,0)和(1,1,1)的假想线…如何我可以这样做吗? 这是我一直在尝试的一个例子: Transform3D t3d = new Transform3D(); Vector3f direction = new Vector3f(1,2,1); final double angleX = direction.angle(new Vector3f(1,0,0)); final double angleY = direction.angle(new Vector3f(0,1,0)); final double angleZ = direction.angle(new Vector3f(0,0,1)); t3d.rotX(angleX); […]

如何全局设置RenderingHints?

对于Java应用程序,我可以在全局范围内设置RenderingHints吗? 目前,我已经在paintComponent方法中定义了这些,如下所示。 但是,我希望在应用程序启动时将它们设置为一次,并让它们在整个会话期间保持不变。 @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); } 谢谢。

如何有效地实现java.awt.Composite?

背景:我需要能够以“禁用”外观创建图像。 通常建议的方法是将图像转换为灰度并显示灰度图像。 缺点是它只适用于图像,因此显示图形很麻烦,因为您无法立即访问处于禁用状态的图像。 现在我认为这可以使用java.awt.Composite动态完成(然后我不需要知道如何实现一个Icon来禁用它)。 似乎没有实现转换为灰度,所以我必须创建自己的…… 也就是说,我一起攻击了一个实现(它呈现了我所期望的)。 但我不确定它是否真的适用于所有情况(复合/ CompositeContext的Javadocs对于这种复杂的操作看起来非常薄)。 正如你从我的实现中看到的那样,我采用了一种迂回的方式来逐像素处理,因为似乎没有简单的方法来批量读取/写入像素,而这种格式并不是由所涉及的栅格决定的。 欢迎任何指向更广泛的文档/示例/提示的指针。 这是SSCCE – 它通过DisabledComposite渲染(彩色)GradientPaint,将渐变转换为灰度。 请注意,在现实世界中,您将无法知道通过哪些调用呈现的内容。 Gradient实际上只是一个例子(抱歉,但是人们常常没有这样做,所以这次我会明确说明)。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Composite; import java.awt.CompositeContext; import java.awt.Dimension; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.ColorModel; import java.awt.image.Raster; import java.awt.image.WritableRaster; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class CompositeSSCE implements Runnable { static class DisabledComposite implements […]