我是Java的新手,但不是图形的新手 我正在尝试通过一个项目来扩展我的理解,在该项目中,我正在使用jlabels和图标显示许多项目的照片, 项目图片是从网上的各个位置和许多来源收集的. 我将它们转换为PNG文件,因为它们具有透明的背景. 事情是我最近浪费了整个周末检查并重新检查了一些代码,因为一个项目不会显示出来,遵循其结论的逻辑告诉我,即使文件正确显示在Photoshop? 我进入了文件,看看它的独特之处,但是除了8位而不是32位,我没有任何区别. ...因此,对我的问题,Java在显示任何特定类型的文件格式时是否有问题,也许我应该在实际找出困难的方法之前知道. 对不起,没有代码,因为问题不保证. 我认为引起我问题的文件是从这里拉出的 /xxxx_logo.png 据我了解, 解决方案 Java应该能够处理PNG. 是 Java不支持包括向量图像格式(例如SVG)的一些格式.但是对于大多数这些,都有外部库可以提供帮助. 关于您已链接
以下是关于 graphic 的编程技术问答
我如何自动确定图像文件是描绘照片还是"图形"? 例如使用ImageMagick? 解决方案 我在这里有点限于我的知识,但是我读了一篇论文,并且已经制定了一种使用ImageMagick计算图像熵的方法 - 一些聪明的人可能想检查它! #!/bin/bash image=$1 # Get number of pixels in image px=$(convert -format "%w*%h\n" "$image" info:|bc) # Calculate entropy # See this paper www1.idc.ac.il/toky/imageProc-10/Lectures/04_histogram_10.ppt convert "$image" -colorspace gray -depth 8 -format "%c" histogram:info:- | \ awk -F: -v px=$px '{p=$1/px;e+=-p*log(p)}
我有一个难题... i创建了一个函数,该功能将绘制11个图表,该图被排列为每个设备窗口的4x3(即mfrow=c(4,3))图.但是,我希望该函数多次使用不同的输入来完成此操作,从而生成每个11个图的多个页面.问题是,由于我每个页面有一个"空"插槽(12-11 = 1),因此我必须告诉代码以启动在新窗口上绘制的每次迭代.我这样做是通过将windows()函数直接添加到功能中来完成的.这很好. 现在的问题是/何时我想将此函数的输出保存为.pdf文件.即使我将功能包装在pdf()设备代码中, pdf('savegraphics.pdf', width = 8, height = 10.5, paper = 'letter') func(...) dev.off() 图形是仍然在R中的图形窗口中打开的图形(并且永远不会保存到.pdf文件).我可以肯定的是,引起这一点的问题是我在原始功能中称windows()的事实. 所以我的问题是: 在创建多个图形/图形页面
我必须创建带有许多数据点的图形.到目前为止,我一直在将所有这些都绘制成一个pdf -file: . pdf("testgraph.pdf") par(mfrow=c(3,3)) for (i in 2:length(names(mtcars))){ plot(mtcars[,1], mtcars[,i]) } dev.off() 但是,有了很多数据点,pdf文件变得太大.由于我对出色的质量不感兴趣,所以我不在乎我的情节是否是矢量图形.因此,我认为将图创建为png,然后将它们插入pdf文件中.除了创建R图表并使用knitr插入R之外,有没有办法这样做(我认为这对这么简单的工作太乏味了)? 解决方案 您可以 创建每个图的.png文件 使用png软件包将其重新读回和 使用grid.arrange 将它们绘制在PDF中 library(png) library(grid) library(gridExtra) thePlots
感谢您查看此问题.我想我沮丧地抓着头骨. 因此,我得到的是包含" Jpanel"的" Jframe". " jpanel"包含一个彩色的正方形,每当我单击窗口时,都应该移动x像素. 好吧,从本质上讲,一切都应按原样行为,一个例外.当蓝色正方形向右移动时,它留下了其他正方形的痕迹.但是,当我重新尺寸大小时,不应该离开小径,小径消失了. catalyst.java package Prototype; import java.awt.*; public class Catalyst { public static void main(String[] args){ World theWorldInstance = new World("Prototype", 100,100, 600,100); /*title,xpos,ypos,width,height*/ } } world.java package Prototype; import j
当您按下其中一个箭头键时,我正试图逐渐移动球,现在它只是传送.我想要它,以便您可以看到它移动.基于此示例,我使用的是键绑定,并且有一个称为delta的变量,导致球移动50像素,但就像我说的那样,球刚刚在哪个方向上出现50个像素,箭头键是您按下的,我希望它就像踢球一样,您可以看到它从A点到B点.转到我认为问题所在的第89行. package game; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.event.A
我使用paint和canvas android中的canvas绘制了一个圆圈. 我想朝某个方向移动圆,是否可以使用任何API方法?还是我每次都必须使用循环并更改位置? 解决方案 嗨,您可以在下面的代码中,在Ontouchevent中,您可以处理方向并移动对象. //tutorial2d.java主活动 import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.Window; public class Tutorial2D extends Activity { Square drawView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS
我正在努力地尝试了解如何有效使用Java图像对象. 我有一个非常简单的程序,该程序绘制图像,然后将图像保存到磁盘上. public class myBrain { public static void main(String[] args) { JFrame lv_frame = new JFrame(); lv_frame.setTitle("Drawing"); lv_frame.setSize(300, 300); lv_frame.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE); lv_frame.add(new image()); lv_frame.setVisible(true); } } class image extends JPanel { public void paintCompon
我的功能正在绘制图像,然后立即保存之后,但是问题是它似乎正在绘制两次,一次在屏幕上进行视图,然后将其保存到磁盘 public class myFrame { public static void main(String[] args) { JFrame lv_frame = new JFrame(); // setup jframe here lv_frame.add(new image()); lv_frame.setVisible(true); } } class image extends JPanel { public void paintComponent(Graphics graphic) { super.paintComponent(graphic); draw(graphic); save(); }
如何使用sdl_createTexture创建透明纹理?默认情况下,我正在使用这样的代码创建Texure: SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET, x, y); ,然后我对这种质地感到痛苦,将输出重定向到此质地.但是最后,我想在屏幕上渲染的任何(不任意)像素是黑色的. 我尝试使用: 的不同方法 SDL_RenderClear(_Renderer); ,甚至是通过绘画和创建的纹理,并具有不同的混合模式的透明透明将 SDL_Rect rect={0,0,Width,Height}; SDL_SetRenderDrawBlendMode(_Renderer,SDL_BLENDMODE_BLEND); SDL_SetRenderDrawColor(_Renderer,255,255,255,0); SDL_RenderFillR
我正在寻找一种使用uibezierpath来编程创建星星,阳光和其他"尖峰"效果的方法. UIBezierPath *sunbeamsPath = [UIBezierPath bezierPath]; [sunbeamsPath moveToPoint: CGPointMake(x, y)]; 是否有任何算法可以通过编程形状像形状那样生成点,而没有路径重叠? 我也对下面的不规则形状的阳光感兴趣: 我想,这种算法会采用一定数量的射线,然后将圆划分为多个段,并在顺时针方向上生成该段的点.像我已经描述的算法一样,还是我必须独自编写一种算法? 谢谢! 解决方案 我知道这个旧的,但是我自己对这个问题的第一部分感到好奇,并且在JRTURTON的帖子中脱颖而出,我创建了一个自定义Uiview,从视图中心生成UibezierPath.甚至为奖励积分而动画旋转.这是结果: 我使用的代码在这里: - (void)drawRect:(CGRect)rect {
意识到没有实时图形效果库的单触库,我决定写自己的文章.经过一项研究,我写了一种卷积方法,该方法正常工作,但是即使使用不安全的代码也非常慢. 我在做什么错?我缺少一些优化吗? 这是我的C#课程,任何建议,无论小小,都欢迎! using System; using System.Drawing; using MonoTouch.CoreGraphics; using System.Runtime.InteropServices; using MonoTouch.UIKit; using MonoTouch; namespace FilterLibrary { public class ConvMatrix { public int Factor { get; set; } public int Offset { get; set; } private int[,] _matrix = { {0, 0, 0, 0, 0},
我正在尝试拍摄整个屏幕的快照以读取像素值.实际上,我正在做任何问题.但是完全214个快照之后,我已经摆脱了记忆例外. Bitmap ScreenShot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); public Bitmap TakeSnapshot() { Graphics graphic = null; Rectangle rect = new Rectangle(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); using (graphic = Graphics.FromImage(ScreenShot)) { graphic.CopyFromScreen(Screen.Prima
对不起我的语言,因为英语是我的第二语言. 我试图将一条直线转换为称为科赫曲线的分形. 给出了直线的2个点,然后我需要创建Koch曲线,在该曲线将线划分为3个段,然后将第二个节作为等边三角形. 请参阅 http://www.tgmdev.be/curvevonkoch.php 到目前为止,我们将直线转换为4个均等段,我需要找出科赫曲线的所有坐标. 当2分的y坐标相同时,我想到了一条直线,这给了我水平的线路.如果是这样,我可以通过将第二部分半部分和右三角形的cos(60)划分为等边三角形的3点. 如这里: http://www.themathpage.com/atrig/atrig/30-60-90 -triangle.htm 我的问题是如何在斜线是对角线时找到所有坐标,例如A(200,100),B(400,600)或A(400,500),B(100,500). . 解决方案 如果您的基本段为AB,则A(AX,AY)和B(BX,BY),则4个子细分将为 AP,PQ,QR
我有多个应用程序,每个应用程序都有来自不同技术的GUI. 我需要这样做 - 1. Create n layers, one for each application, onto which applications draw. 2. Have a layer manager which can perform operations on each of these layers (like re sizing, changing opacity etc. ) and then combine them to form a single layer. 有人可以对我该如何继续这样做的想法吗? API可能会帮助我做什么?我无法真正弄清楚应该在Google上搜索什么. 实施语言:C ++ 平台:Linux 我也想知道是否可以以独立平台的方式实现这些要求? 解决方案 如果我正确理解了您的问题,您想要某种简单的窗口管理器. 如果
如何使用sdl_createTexture创建透明纹理?默认情况下,我正在使用此类代码创建Texure: SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET, x, y); ,然后我对这种质地感到痛苦,将输出重定向到此质地.但是最后,我想在屏幕上渲染的任何(不任意)像素是黑色的. 我尝试使用: 的不同方法 SDL_RenderClear(_Renderer); ,甚至是通过绘画和创建的纹理,具有不同的混合模式的透明式RECT,但我所拥有的只是不透明的纹理:/ SDL_Rect rect={0,0,Width,Height}; SDL_SetRenderDrawBlendMode(_Renderer,SDL_BLENDMODE_BLEND); SDL_SetRenderDrawColor(_Renderer,255,255,255,0);
在c#中,我创建了一种新的油漆方法: private void thisPolygon(PaintEventArgs e) { Pen clrBlue = new Pen(Color.Blue, 3); Point[] Wst = new Point[5]; Wst[0] = new Point(20, 350); Wst[1] = new Point(110, 200); Wst[2] = new Point(200, 190); Wst[3] = new Point(210, 275); Wst[4] = new Point(190, 400); Wst[5] = new Point(50, 390); e.Graphics.DrawPolygon(clrBlue, Wst); } 现在,我该怎么称呼?我无法正常工作,这是行不通的: private void Form1_Load(object s
我在带有涡轮c ++的C c的简单图形库中工作,因为我正在开发非常原始的油漆样式程序,所以每个人都可以很好地工作,但是我无法使洪水填充算法工作.即时通讯使用四种洪水填充算法,首先我尝试了递归版本,但它仅适用于小区域,填充很大的区域使其崩溃;阅读我发现实现了它的明确堆栈版本解决了问题,但我没有真正看到它. 我已经开发了这样的堆栈: struct node { int x, y; struct node *next; }; int push(struct node **top, int x, int y) { struct node *newNode; newNode = (struct node *)malloc(sizeof(struct node)); if(newNode == NULL) //If there is no more memory return 0; newNode->x = x;