Tag: canvas

Android – 扩展我的UI以适应所有屏幕尺寸?

到目前为止,我已经尝试了许多将图像缩放到屏幕尺寸的方法,但它们似乎都不适用于我。 我还是java新手,并且拥有适合任何屏幕大小的UI的想法对我来说似乎很陌生。 我正在使用Canvas类绘制位图。 我尝试过创建一个scaledBitmap并且没有看到任何区别。 我想要这样一个简单的主菜单屏幕 这一定是一个非常常见的问题,因为所有应用都需要这样做。 我真的可以使用一些帮助来理解它是如何工作的。 在某些手机上看起来不错,但在其他手机上,图像太大或偏离中心。 我的代码如下。 如果有人可以帮助我在这里,这是一个学期项目即将到期:P谢谢你们! public MainMenu(Context context) { super(context); titleBounds = new RectF(); playBounds = new RectF(); scoreBounds = new RectF(); soundBounds = new RectF(); creditBounds = new RectF(); titlePaint = new Paint(); playPaint = new Paint(); play = BitmapFactory.decodeResource(getResources(), R.drawable.play); playGlow = BitmapFactory.decodeResource(getResources(), R.drawable.playglow); sound = BitmapFactory.decodeResource(getResources(), R.drawable.sound); […]

使用Canvas创建3D立方体

我有一个2d位图,我想将其转换为3d立方体(例如在我的世界中: ) 我设法使用“相机”在3d空间中旋转图像,但我无法理解如何控制它或如何创建一个立方体,任何人都有想法? 请注意我只允许使用canvas而不使用OpenGL。 编辑:这跟我一样接近: 使用此代码: Matrix mMatrix = canvas.getMatrix(); canvas.save(); Camera camera=new Camera(); camera.save(); camera.rotateY(30); camera.getMatrix(mMatrix); mMatrix.preTranslate(-30, 0); mMatrix.postTranslate(30, 0); canvas.concat(mMatrix); canvas.drawBitmap(b, 150, 150, null); canvas.drawBitmap(b, 180, 180, null); camera.restore(); canvas.restore(); canvas.save();

从Java Servlet将canvas图像保存到png图像文件中

我一直在尝试将canvas图像从HTML页面保存到Java Servlet中的图像文件。 我需要通过Ajax请求将图像从HTML发送到Java Servlet。 有人可以帮帮我吗? 我已经尝试过以下选项 堆栈溢出问题1 这里, request.getPart(“myImg”)返回null,因此这不起作用。 请帮帮我。 我也尝试了以下解决方案将canvas的内容发送到java 这里的问题是它给了我一个例外,在下一行设置了无效的文字/长度 BufferedImage bfi = ImageIO.read(new ByteArrayInputStream(decodedBytes)); 请帮忙!! 更新: 这是我的Ajax代码: function uploadImage() { var canvasServer = document.getElementById(“canvasThumbResult”); var context = canvasServer.getContext(“2d”); var imageDataURL = canvasServer.toDataURL(‘image/png’); var xhr = new XMLHttpRequest(); xhr.open(“POST”, trinityCvaServicesUrl+”common/uploadImage”, true); var boundary = Math.random().toString().substr(2); xhr.setRequestHeader(“content-type”, “multipart/form-data; charset=utf-8; boundary=” + boundary); var multipart […]

java将图像添加到canvas

我正在尝试将图像添加到Javacanvas。 我正在使用“ImageIO.read”来获取图像源。 我面临的问题是,我不知道如何在阅读图像位置后在canvas上显示它。 稍后我将需要加载不同的图像(例如按下按钮后)我该怎么做。 更新(canvas.update)方法需要“Graphics”参数而不是图像。 下面你会发现我的代码已经简化了(我遗漏了与canvas问题无关的所有代码。) public class MainWindow { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { window = new MainWindow(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public MainWindow() { initialize(); } /** * Initialize the […]

Java Canvas repaint()正在闪烁

所以我终于得到了一个Canvas以我想要的方式工作但它不断闪烁,repaint()每秒运行20次,当我每秒运行10次时轻弹就会减弱。 package pd.data; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JPanel; import pd.areas.MainMenu; @SuppressWarnings(“serial”) public class Main extends JFrame implements Runnable { private JPanel contentPane = new JPanel(); private Thread gameThread = new Thread(this); public boolean running = false; @SuppressWarnings(“unused”) private int current = PDU.PD_MAIN_MENU; private MainMenu mainmenu; public Main() {main.setTitle(“PD”); main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); main.setLocation(SPU.screenWidth / 2 – SPU.windowSize.width […]

继续收到错误“组件必须可显示”

嗨,我一直收到一个错误“组件必须可显示”并且无法解决它我查看了SO上的问题并尝试了解决方案,但无济于事。 我正在尝试实现一个JVLC播放器,当我在Vid类中尝试“.setVideoOutput(canvas1)”时会发生错误 这是主要的课程。 import java.awt.Component; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Shane */ public class Main extends javax.swing.JFrame { private LessonPanel lesson; private MultiChoice multiChoice; private Vid video; private int xSize; private int ySize; public Main() throws InterruptedException { Toolkit tk = Toolkit.getDefaultToolkit(); xSize = […]

JavaFX Canvas Double Buffering

我正在使用JavaFX在Java中复制经典游戏Pong。 我使用java.util.Timer,java.util.TimerTask进行游戏循环,使用JavaFX的Canvas进行渲染。 有没有办法为Canvas添加双缓冲,以便动画不会闪烁? 或者我应该采用不同的方法吗? 贝娄是代码。 我删除了它的一些部分,我认为这些部分无关紧要,因为代码长约200行。 Canvas canvas = new Canvas(stageW, stageH); GraphicsContext gc; public void start(Stage stage) throws Exception { Group root = new Group(); gc = canvas.getGraphicsContext2D(); Timer loop = new Timer(); root.getChildren().add(canvas); loop.schedule(new GameLoop(), 0, 1000 / 60); stage.setScene(new Scene(root,stageW, stageH)); stage.show(); } public class GameLoop extends TimerTask { @Override public void […]

JavaFX上Canvas.snapshot()的替代方案

我正在使用JavaFX中的Canvas开发一个小图形引擎。 在某些时候,我必须渲染一个屏幕外图像,然后使用其GraphicContext在我的主canvas上打印它。 我现在正在使用此代码: private Canvas offScreenCanvas; private GraphicsContext offScreenGraphic; private SnapshotParameters parameters; private WritableImage offScreenImage; […] offScreenCanvas = new Canvas(WIDTH, HEIGHT); offScreenGraphic = offScreenCanvas.getGraphicsContext2D(); parameters = new SnapshotParameters(); parameters.setFill(Color.TRANSPARENT); […] offScreenImage = offScreenCanvas.snapshot(parameters, offScreenImage); graphic.setGlobalBlendMode(BlendMode.HARD_LIGHT); graphic.drawImage(offScreenImage, 0, 0); graphic.setGlobalBlendMode(BlendMode.SRC_OVER); 我的问题是方法snaphot()在每次执行中花费太多时间,约14毫秒。 我需要至少以60fps更新canvas,所以这几乎消耗了我必须画的所有时间。 是否有另一种方法从canvas中获取Image或WritableImage ? 也许另一个不同的过程

是否可以在JavaFX中将CanView放在Canvas上?

我是javafx的新手。 我正在开发一个应用程序,其中我有一个canvas,我已经在其中绘制了几个图像。 我想在我的canvas上添加一个ImageView并在点击ImageView时实现一个弹出窗口? 是否有任何可能有或没有ImageView (按钮或任何控件?)或是否限制使用canvas上的控件? 我需要一些建议。

Java重绘不能正常工作

我使用java重绘方法,它重新绘制,但只有当我点击canvas或调整面板大小时才会看到更新。 我怎样才能解决这个问题 ? 是什么导致的?