草庐IT

Graphics

全部标签

java - 基于内容估计文本宽度的算法

这是一个远景,但有谁知道根据其内容估计和分类文本宽度(对于可变宽度字体)的算法?例如,我想知道iiiiiiii不如abcdefgh宽,而abcdefgh又不如WWWWWWWW,即使所有三个字符串的长度都是八个字符。这实际上是尝试将一些智能构建到字符串截断方法中,目前它正确地截断了视觉上较宽的字符串,但也不必要地截断了视觉上较窄的字符串,因为两个字符串包含相同数量的字符。算法将输入字符串分类为narrow、normal或wide,然后适当截断可能就足够了。这个问题并不是真正特定于语言的,但是如果有算法那么我会用Java实现它。这适用于Web应用程序。我知道SO上有一些答案可以使用Java

java - 在Java中画一 strip 箭头的线

谁能指导我如何对不同方向的箭头线进行编码。wa和wl为正矩形将位于x轴的顶部。下面的示例显示了wl是否为负而wa是否为正。下面的代码显示了我如何对矩形进行编码。x1是声明从x轴开始的位置的变量。e1是形状的长度,wa1和wl1是高度。wsign决定wa1或wl1应显示在负侧或正侧的高度。if(Math.abs(wl1)>Math.abs(wa1)){y_scale=(load_y0-40)/(double)Math.abs(wl1);}else{y_scale=(load_y0-40)/(double)Math.abs(wa1);}g.drawLine((int)((double)x0

Java:图形还是 Graphics2D?

我是Java的新手,一直在尝试用它制作一些屏幕上有很多图像的简单游戏。从那时起,我一直在使用“Graphics”类来绘制这些图像、字符串和形状,但我最近遇到了Graphics2D,这似乎是同一类东西。谁能告诉我它们之间的区别是什么,哪个最好用?如果我想使用Graphics2D,我是否必须对我的代码执行一些大的更新? 最佳答案 传递给paint(Graphics)的Graphics实际上是一个Graphics2D对象。如果您想使用任何Graphics2D功能,只需对其进行转换并进行所需的调用即可。

java - 如何在 Java 中编写全屏模式?

我希望我的应用程序具有全屏模式。最简单的方法是什么?我需要第三方库吗?还是JDK中已经提供了这个? 最佳答案 试试Full-ScreenExclusiveModeAPI.它是在1.4版的JDK中引入的。一些功能包括:Full-ScreenExclusiveMode-allowsyoutosuspendthewindowingsystemsothatdrawingcanbedonedirectlytothescreen.DisplayMode-composedofthesize(widthandheightofthemonitor,i

Java bufferstrategy图形或整型数组

在使用Java进行2D游戏开发时,大多数教程都会创建一个缓冲策略来进行渲染。这是完全有道理的。然而,人们似乎偏离了将实际图形绘制到缓冲区的方法。一些教程创建一个缓冲图像,然后创建一个整数数组来表示各个像素颜色。privateBufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);privateint[]pixels=((DataBufferInt)image.getRaster().getDataBuffer()).getData();Graphicsg=bs.getDrawGraphic

java - 简化的 Bresenham 线算法 : What does it *exactly* do?

根据维基百科关于Bresenham直线算法的文章,我实现了simplifiedversion在那里描述,我的Java实现如下所示:intdx=Math.abs(x2-x1);intdy=Math.abs(y2-y1);intsx=(x1-dy){err=err-dy;x1=x1+sx;}if(e2现在我确实明白了err控制着x轴上的步数与y轴上的步数之间的比率——但现在我应该记录代码在做什么我未能清楚地表达它的用途,以及为什么确切地if语句是什么,它们是怎样的,以及为什么err以代码中所见的方式更改.维基百科没有指出任何更详细的解释或来源,所以我想知道:err究竟做了什么以及为什么dx

java - 将 Java 2d 图形图像保存为 .png 文件

我正在绘制我的模拟生成的信息的图形表示。我有图表显示,但我遇到的问题是能够将其保存为.png。当它保存png时,文件全是黑色的,所以它不是在保存我的图形,而是创建一些空白的png文件。问题是我很难弄清楚如何转换为BufferedImage或RenderedImage我在eclipse中的所有尝试都会抛出错误,当我编译它时,它会像我上面描述的那样工作。有什么想法或建议吗?我已经坚持了几个星期,要么这是一个明显的修复,要么我无法将其保存为png。但是根据我进行的研究,可以将java2d图形img保存为png文件,我不知道我错过了什么?一双新鲜的眼睛将不胜感激!在此先感谢您,感谢您对此提出的

java - 如何在Java中绘制实心圆?

我有一个带有网格布局的JPanel。在网格的“单元格”中,我可以放置不同的元素(例如JButtons)。没有问题。但现在我想在一些单元格中放置一个实心圆圈。我还想将ActionListener与这些圈子联系起来。更详细地说,如果我单击圆圈,它会从当前单元格中消失并出现在另一个单元格中。我怎样才能用Java做到这一点?我正在使用Swing。 最佳答案 publicvoidpaintComponent(Graphicsg){super.paintComponent(g);Graphics2Dg2d=(Graphics2D)g;//Ass

java - 以透明背景保存缓冲图像

我正在将签名图像保存为.jpg图片。我使用graphic2d在图像上绘制签名的每个像素(使用签名平板电脑获得)并且效果很好,但我总是得到白色背景。如果我想在PDF文档上签名,jpg图像的白色方block的边框会覆盖PDF的一些文字。我想得到的是用透明背景保存jpg图像,所以当我把它放在PDF上时,没有文字被白色图像背景覆盖,只有签名行。这是保存缓冲图像的代码。它是用白色背景做的。//ThismethodreferstothesignatureimagetosaveprivateRenderedImagegetImage(){intwidth=tabletWidth;intheight=

java - super.paintComponent(g) 是做什么的?

super.paintComponent(g)做了什么(特别是当我们将它放在paintComponent()方法中时)?我很惊讶之前没有看到有人在SO中问过这个问题。我翻出我关于JavaGraphics的学校笔记,它在这行代码中唯一提到的是“不要删除”。然而,这几周我一直在练习和尝试使用JavapaintComponent()方法。到目前为止,我还没有将该行包含到我的代码中,而且一切似乎都运行良好(到目前为止)。所以..问题:它有什么作用?我们什么时候需要使用它?把它写在paintComponent()里给我们带来什么好处? 最佳答案