问题标签 [java-canvas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 画布形状模型的继承与组合?
对于以下模型,您更喜欢继承还是组合:
- 我想在
canvas
每个代表一个数据对象的对象上绘制对象 - 把它想象成一个状态机图:
Ellipses
表示States
,Lines
表示connections/transitions
它们之间。对象表示本身永远不会改变,即 aState
将始终由 a 显示ellipse
。但是ellipse
绘制的方式应该不同,例如对于选择它应该有不同的颜色,而拖动它应该有一个 alpha 通道等。
从设计的角度来看, anellipse
不是 a state
, aline
也不是 a transition
。无论如何,将这两个对象组合起来是合适的,以便能够将它们收集在 a 中并在每个对象上List<Shape>
执行。shape.draw()
现在有 2 个设计模型是可能的,而我认为 2 个类总是相同的:
遗产:
尽管从设计的角度来看 arectangle
不是 a State
,并且 astate
也不是 a figure
,但关于绘图上下文,这可能是可行的。shapes
因为我可以继承处理、绘图等所需的大部分内容。
或组成:
所以Rectangle
+Line
将是我的对象的包装器。
一个 Rectangle 和 Line 应该扩展 State 和 Transition,还是包含它?
或者,也许还有我没有看到的第三种设计选项。期待你的想法。
java - 点击画布
我正在制作一个 Pong 程序,并且我有一个开始按钮,可以开始绘制所有内容,并且确实可以让球滚动(欢迎您使用双关语)。无论如何,当我点击开始按钮时,除非我在画布上的某处单击鼠标以赋予它优先级,否则移动桨的 Key Listener 将不起作用。是否有某种代码可以自动在画布上“单击”而不会打扰用户这样做?提前致谢。
顺便说一句,这是在运行 awt。我意识到我应该学习挥杆,但一直没有去做。
java - 图形的仿射变换,而不是文本和标签
这篇文章是我对一个问题的回答的一个套件:Transforming a shape
这是我想要的图像:
这是一个简单程序生成的图像,您可以看到文本已旋转。我想要水平文本:
画布被缩放、平移、旋转以进行绘图,因此文本不会水平显示并且字体大小需要大大减小(1.4)。该程序是用 Java(awt 和 JavaFX)编写的,但问题与语言或技术无关,因此欢迎提出任何建议。
这是一个简单的程序:
在用于显示第一个图像(目标)的程序中,我使用了两个画布,第一个画布被缩放、平移、旋转以在没有任何文本的情况下进行绘图,第二个画布仅用于水平绘制标签,java.awt.geom.AffineTransform
用于计算坐标以匹配第一个画布中显示的项目。两个画布叠加显示,它们是透明的。
java - 清除并重用 Canvas,还是创建新对象?
我的设置:
我有一个GWT Canvas
显示一些依赖于繁重算法的图形。对象是可拖动的,因此在拖动时,我将拖动对象旁边的所有内容保存在临时画布上,并将其作为拖动上下文后面的图像重用。
我的问题:我的拖动画布是一个重用的 Canvas 对象,在开始拖动之前必须先清除它,然后再将静态上下文保存到它。我想知道“重用和清除”是否比“创建新的画布对象”更好。
你怎么看?
每次都清除画布:
...或创建新对象:
java - java.awt.image.DataBufferByte 不能转换为 java.awt.image.DataBufferInt
我在使用 JAVA 编码时遇到了一些错误,我一直在尝试解决这个问题,也试图找到有同样问题的其他人并修复它但没有任何效果......
嗯..这是代码
错误是:
java - Java在调用paint方法时清除屏幕 - 如何避免这种情况?
我试图在 Java 中的 Canvas 中绘制两条线,分别调用两个方法,但是当我绘制第二条线时,第一条线消失(Java 清除屏幕)。我怎样才能避免这种情况?我想看看这两条线。我看过画图教程(如何在 Windows 上制作像画图这样的程序),其中用户使用鼠标画线,当画出一条线时,另一条线不会消失。他们只是调用paint方法,它不会清除屏幕。
如果有人可以帮助我,我将不胜感激。谢谢。
查看课程
主班
java - KeyListener 不起作用
我正在编写类似炸弹人的游戏,但我的 KeyListener 有问题。
问题是,当游戏运行时,KeyListener 没有响应,但当它不运行时,它会按照我告诉他的去做。
这是我的代码
} }
然后
和...
我希望我可以理解,并感谢您的阅读。
java - 如何将数组中的每个元素表示为一条线
此应用程序对一个数组进行排序。想用一行相等的值来表示当前项目的变化。我不知道我会把paint方法(或draw)放在哪里来绘制我当前的项目,因为方法“run()”不能。
最后,我希望它看起来像这样:
为此数组 Arr[]={4,3,5,2,1} 在画布中绘制:_ __ _ __ ___
( Arr 使用其中一种方法排序的已排序向量之一)
1 2 3 4 5
java - 使用“canvas = Holder.lockCanvas();”时,canvas 为空,Android Java
我刚刚回到android java,并按照我之前制作的模板制作了一个快速游戏(成功)。当试图定义我的“画布”时 Holder.lockCanvas(); 正在返回一个“null”值(我认为命令本身可能会失败)。我已经通过执行以下操作检查表面是否有效:
如果需要,其余代码在下面,问题在底部附近,在类运行中。
任何帮助将不胜感激,感谢您的宝贵时间。
java - 扩展 Canvas 时使用 drawLine() 绘制粗线
鉴于以下情况:
当我画线时,currLine
我得到了这个:
正如你所看到的,我打了 3 次电话drawline()
,让它更大胆,但它仍然不像我想要的那样。
我怎样才能画出一条粗线?