Tag: 绘制

如何在JAVA中设置运行时的笔触颜色?

我正在尝试创建一个界面,用户可以在其中更改线条的颜色以标记背景或图像的前景。 到目前为止,我已编码: private class ImageLine extends JComponent { java.awt.Point p1,p2; BufferedImage show; ArrayList shapes = new ArrayList(); int flag = 0; Color color = Color.ORANGE; public ImageLine(BufferedImage img) { show = img; setPreferredSize(new Dimension(img.getWidth(), img.getHeight())); this.addMouseListener ( new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { p1 = e.getPoint(); } @Override public void mouseReleased(MouseEvent e) […]

将位图加载到canvas并在其上绘制

我喜欢制作一个应用程序,比如一个小小的颜料,我必须得到一个位图,在canvas上绘制它,然后绘制它(用figer)…所以,我实际上有这个代码: import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import android.content.Context; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.os.Environment; import android.util.Log; import android.graphics.Bitmap; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class DrawView extends View implements OnTouchListener { private Canvas mCanvas; private Path mPath; public Paint mPaint; private ArrayList paths = new ArrayList(); private […]

Java:每X秒执行一次操作

我有一个工作的Java程序,我想每隔X秒在显示器上绘制一个对象。 做这个的最好方式是什么? 我正在考虑使用for循环和一些sleep语句,但我很好奇是否有更简单或更有效的方法来解决这个问题。 谢谢。

在canvas上绘制路径作为动画

我不得不再问一次,因为之前没有人回答我的问题(我的问题不是如何在带有动画的Androidcanvas上绘制路径? )。 请仔细阅读并尽可能通过提供代码帮助我。 我不清楚这个简单的例子,并且在绘图流程中创建了Path。 这不是我要找的…… 我想通过绘制时间间隔的点来绘制已存在于我的View类中的ONE Path,以模拟动画。 我应该如何修改我的onDraw类来存档它? public void onDraw(Canvas canvas) { paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(6); paint.setColor(Color.parseColor(“#10BCC9”)); if(path != null && !path.isEmpty()) canvas.drawPath(path, paint); } 我认为这是一个简单的问题,我不相信没有简单的答案……请帮助……

如何在SWTcanvas上绘制选择框?

我有一个带有一些图像的SWT Canvas。 我希望我的用户通过单击,按住鼠标左键并通过移动鼠标打开选择框来选择图像的一部分。 作为视觉反馈,我想将选定的矩形显示为我图像上的透明覆盖。 问题是我不知道如何最好地实现这一目标? 有人可以给我一个暗示吗?

Java Graphics:每次重新绘制时,我都会得到一个黑色闪光

我是java绘图函数的新手,但我有一个我构建的示例直方图。 点击按钮,我用随机值重建直方图。 但是,每当我按下按钮进行重新绘制时,我会在重绘之前获得黑色闪光。 我记得听说这很常见,修复与缓冲有关。 任何建议?

Java重绘不能正常工作

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

Java – 子像素线精度是否需要AffineTransform?

我之前从未使用过Java绘图方法,所以我决定深入研究并创建一个模拟时钟作为PoC。 除了手之外,我画了一个钟面,包括刻度标记,分钟/小时。 我使用简单的sin / cos计算来确定圆周线的位置。 但是,我注意到由于分钟刻度非常短,因此线条的角度看起来不对。 我确定这是因为Graphics2D.drawLine()和Line2D.double()方法都无法以子像素精度绘制。 我知道我可以绘制来自中心的线条并用圆圈遮盖它(以创建更长,更准确的线条),但这似乎是一种不优雅且昂贵的解决方案。 我已经做过一些关于如何做到这一点的研究,但我遇到的最好的答案是使用AffineTransform 。 我假设我只能使用带旋转的AffineTransform ,而不必执行超级采样。 这是以亚像素精度绘制的唯一/最佳方法吗? 或者是否有更快的解决方案? 编辑 :我已经将RenderingHint设置为Graphics2D对象。 根据要求,这里有一些代码(没有完全优化,因为这只是一个PoC): diameter = Math.max(Math.min(pnlOuter.getSize().getWidth(), pnlOuter.getSize().getHeight()) – 2, MIN_DIAMETER); for (double radTick = 0d; radTick < 360d; radTick += 6d) { g2d.draw(new Line2D.Double( (diameter / 2) + (Math.cos(Math.toRadians(radTick))) * diameter / 2.1d, (diameter / 2) + (Math.sin(Math.toRadians(radTick))) * diameter / […]

Java – paintComponent中的MouseListener Action事件

这里我有一个代码,使用paintComponent在mouseClicked位置绘制一个矩形。我可以得到输出消息,但任何与图形和.draw()相关的东西都不会起作用。 码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public final class testclass extends JFrame { static JPanel p; Timer t; int x = 1; int y = 1; int xspeed = 1; int yspeed = 1; public testclass() { initComponents(); this.setBounds(100, 300, 500, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); t.start(); this.add(p); } public void initComponents() { final ActionListener action […]

在帧上绘制自己的缓冲图像

我有一个缓冲的图像与我的框架的大小: public BufferedImage img; public static int WIDTH = 800; public static int HEIGHT = 600; img=new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB); 我怎么画它所以我只能看到填充框架的黑色图像? 不使用Canvas 我想在不使用paint或paintComponent函数的情况下仅使用图形中的drawImage函数 如果可能,我如何为该图像分配1Darrays[WIDTH * HEIGHT]? 简单:我想创建一个图像,将数组中的值转换为像素(0 =黑色,999999999 =浅蓝色等)并将其绘制到屏幕上。 编辑: 这是不能按预期工作的代码(它应该是一个带有黑色绘制图像的框架),但它只是一个空白框架。为什么图像没有添加到框架中? import javax.swing.*; import java.awt.Canvas; import java.awt.Graphics; import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; public class test extends Canvas{ public static JFrame frame; public static int WIDTH […]