草庐IT

Graphics

全部标签

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

背景:我需要能够创建“残疾”外观的图像。通常建议的方法是将图像转换为灰度并显示灰度图像。缺点是它仅适用于图像,因此在无法立即访问处于禁用状态的图像的情况下显示图形会很麻烦。现在我认为这可以通过java.awt.Composite即时完成(然后我就不需要知道例如如何实现Icon以使其禁用)。只是似乎没有转换为灰度的实现,所以我不得不创建自己的...就是说,我拼凑了一个实现(它呈现了我期望的效果)。但我不确定它是否真的适用于所有情况(Composite/CompositeContext的Javadocs对于如此复杂的操作来说似乎非常薄)。正如您从我的实现中看到的那样,我采用了一种迂回的方式

java - 计算单元格大小并绘制(中间有线)

我想绘制一个网格并在单元格中绘制内容(为了简单起见,只需填充它们)。总的来说,我几乎只在某些面板尺寸下工作,单元格距离它应该放置的位置大约1个像素(重叠线)。TBH我还没有真正做足够的计算来自己找到答案,所以我对此表示歉意,不过我真的不太确定如何解决这个“错误”。无论如何,这是代码:publicclassGuiextendsJFrame{publicstaticvoidmain(String[]args){newGui().setVisible(true);}publicGui(){setDefaultCloseOperation(WindowConstants.EXIT_ON_CLO

Java Swing 图形故障?

Imageoftheglitch我正在通过复制教科书中的示例来学习Java,一旦我开始使用GUI类,我就遇到了一些奇怪的故障,如果这是正确的术语的话。正如您在图像上看到的,部分文本丢失了。生成这个对话框的代码也不复杂:importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;importjavax.swing.Timer;publicclassInnerClassTest{publicstaticvoidmain(String[]args){TalkingClockclock=newTal

javascript - Jcrop 没有正确裁剪图像

我的jcrop代码$(function(){//Createvariables(inthisscope)toholdtheAPIandimagesizevarjcrop_api,boundx,boundy,//Grabsomeinformationaboutthepreviewpane$preview=$('#preview-pane'),$pcnt=$('#preview-pane.preview-container'),$pimg=$('#preview-pane.preview-containerimg'),xsize=$pcnt.width(),ysize=$pcnt.heig

java - 了解 drawLine 的工作原理

给定以下代码:importjavax.swing.*;importjava.awt.*;publicclassNewClassextendsJPanel{publicvoidpaintComponent(Graphicsg){g.drawLine(0,0,90,90);}publicstaticvoidmain(String[]args){JFramejf=newJFrame();jf.add(newNewClass());jf.setSize(500,500);jf.setVisible(true);}}如果方法drawLine是抽象的,而且据我理解,抽象方法没有定义,为什么它会画一

java - 在我的程序中为我的非图形相关类使用 swing 和 awt 类是不好的做法吗?

那么,假设我有一些游戏,例如Pong。显然,一般来说,您不想将游戏逻辑混合到图形类中,因此Ball或Paddle类与实际绘制它们的JPanel是分开的。Ball具有球的移动逻辑、当前位置、命中检测等。但是,在我的Ball类中使用Swing和awt中的图形类对我来说是不好的做法吗?例如,如果我要使用java.awt.Rectangle来确定碰撞框。尽管我没有在这个类上画它,但我正在使用它。或者如果我要使用Java.awt.Point来存储坐标。顺便说一句,我问的原因是因为我在这个网站上被多次告知不要将图形与其他部分混在一起。在非图形类中使用Rectangle:(这是不好的做法吗?)pub

Java 图像截断

与上次相同的问题,但我会提供更多细节。我目前正在使用以下方法旋转图像:introtateNum//inmainclassdoublerotationRequired=Math.toRadians(rotateNum);doublelocationX=img.getWidth(this)/2;doublelocationY=img.getHeight(this)/2;AffineTransformtx=AffineTransform.getRotateInstance(rotationRequired,locationX,locationY);AffineTransformOpop=ne

java - 如何找到两个任意多边形之间的重叠区域

我正在尝试创建一个方法,该方法将接受两个任意节点列表,一个主题和一个剪裁多边形,并输出:a)theareaoftheoverlapb)alistofnodesfortheresulting(clipped)polygonsothatIcancalculatethearea我发现了很多使用矩形窗口(这在图形中相当标准)裁剪任意多边形的示例,但这不是我需要的。我知道它相当复杂,特别是当你有洞、凸多边形等时。我可以做的唯一简化假设是任意多边形不包含任何孔。我根本不是这个领域的专家,那么像Sutherland-Hodgman算法这样的算法行得通吗?是否有任何图书馆已经这样做了,或者我最好的选择

java - 如何在 Graphics 方法 drawImage() 中使用 ImageObserver

我尝试使用的方法是:drawImage(image,int,int,int,int,ImageObserver)方法这样我就可以缩放我的图像,在我看到的所有示例中,ImageObserver应该是这样的,但这似乎不起作用(即我看到的唯一方法是:drawImage(image,int,int,ImageObserver),不知道这是否有所作为)。这是我的主要类,即小程序:importjava.applet.*;importjava.awt.*;publicclassMainextendsAppletimplementsRunnable{privateThreadth;privateHit

java - 如何停止 BufferedImage.getGraphics() 打开 X11 设备?

我有以下用于创建光栅图像的代码。BufferedImageimg=newBufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);Graphicsg=img.getGraphics();g.setColor(backgroundColour);g.fillRect(0,0,width,height);这在我的Windows机器和本地Ubuntu机器上运行,但是当传输到服务器时会尝试调用X11服务器,并显示堆栈跟踪。我怎样才能避免这种情况?Exceptioninthread"main"java.lang.InternalError: