Articles of canvas

用孔绘制路径(android)

有没有人对我有以下问题的暗示? 我想绘制一条填充路径(canvas),其中有一个洞。 在SVG中,路径定义如下: M 100 100 L 200 100 L 200 200 L 100 200 L 100 100 z M 125 125 L 175 125 L 175 175 L 125 175 L 125 125 z 我想绘制这条路径(形状)而没有路径减去路径(因为具体的软件设计) 我尝试使用java绘制了一个没有洞的完整正方形。 我想知道,为什么一个SVG查看器用精神上的定义绘制漏洞而javacanvas没有? 区别在哪里? 我怎样才能做到这一点? Path p=new Path(); p.moveTo(100, 100); p.lineTo(200,100); p.lineTo(200,200); p.lineTo(100,200); p.close(); p.moveTo(150, 150); p.moveTo(180, 150); p.moveTo(180, 180); […]

Android:Canvas vs OpenGL

我有一个绘图应用程序,用户可以用手指绘制线条,调整颜色,厚度等。当用户绘图时,我正在将集合的X / Y点从MotionEvent转换为SVG路径 ,以及创建Android路径然后通过Canvas将Android Path添加到屏幕上,并将SVG Path提交到应用程序的数据库。 我正在关注FingerPaint中使用的模型,因为通过重复调用invalidate() (以及onDraw() )动态绘制“进行中”行,并且一旦行完成并且新行开始,前一行是从底层Canvas Bitmap在onDraw() )中绘制的,正在进行的行再次生成重复的重绘。 这在此应用程序中工作正常 – 直到您开始旋转底层Bitmap以补偿设备旋转,支持在绘图表面上“放大”并因此必须缩放基础Bitmap等的能力。例如,使用设备旋转和绘图缩放,当用户绘图时,我们需要在onDraw()中缩放和旋转我们的位图,这绝对是爬行的。 我看过一个SurfaceView ,但由于这仍然使用相同的Canvas机制,我不确定我会看到明显的改进……所以我的想法转向OpenGL。 我已经读过某个地方,OpenGL可以基本上“免费”进行旋转和缩放,甚至看到谣言 (第三条评论) Canvas可能会在未来的版本中消失。 从本质上讲,我在Canvas和OpenGL解决方案之间有点陷阱…我有一个2D绘图应用程序,在一个状态下似乎完全适合Canvas模型,因为没有像游戏那样不断重新绘制(对于例如,当用户没有绘图时我不需要任何重新绘图),但是当用户绘图时,我需要最大的性能来完成表面上一些越来越复杂的事情…… 欢迎任何想法,指示和建议。

Android 4.1.1上的HTML5canvas问题

既然Android 4.1.1在某些手机上出现了,我注意到问题开始使用默认浏览器和这个操作系统popup。 在我的情况下,我有一个使用Web视图(意味着默认浏览器)和大量canvas的应用程序。 我希望通过这个话题让大家发布问题和解决方案,如果你知道的话。 我将从: 问题:重复的canvas更多信息位于: http : //code.google.com/p/android/issues/detail? id = 35474 解决方案 Canvas父元素不应该具有值为“hidden”的css属性“overflow” 问题canvas绘图看起来像素化更多信息:您可以阅读: http ://www.html5rocks.com/en/tutorials/canvas/hidpi/并测试//html5rocks.com/en/tutorials/canvas/hidpi/demo/demo .html看你自己(在我的情况下,我不使用我使用canvas构建的图像,我的绘图看起来像素化)也可以在//code.google.com/p/android/issues/detail?id=find一些信息38470 解决方案 (搜索一个) 问题canvas绘制消失更多信息:我找不到其他人遇到这个,在我的情况下,它有时会重现。 解决方案 (搜索一个) PS:由于反垃圾邮件,我无法发布链接 更新 (2013年9月3日):重复canvas问题现在出现在具有Android 4.2.2和/或4.3的Nexus 7上。此外,您可能想知道只有在您的设备启用了“强制GPU渲染”时才会出现“重复canvas”问题。

Android,绘制位图到canvas的最快方法

只是想知道将位图绘制到canvas的最快方法是什么? 目前我有一个位图(和绘图canvas),我用它来缓冲绘图调用,然后当我绘制到canvas时通过应用1pxcanvas翻译有滚动效果。 仅此一项就可以将帧速率从60+ FPS降低到~40,非常受欢迎。 我现在不使用surfaceView(或GLSurfaceView),但只是想知道我是否遗漏任何会提高速度的东西。 onDraw()代码如下 @Override public void onDraw(Canvas canvas) { //update fps text mFpsTracker.frameTouch(); if(mBufferedBitmap == null) { mBufferedBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_4444); mBufferedCanvas = new Canvas(mBufferedBitmap); } paint.setColor(Color.BLUE); mBufferedCanvas.drawLine(0, getHeight(), getWidth(), getHeight(), paint); mBufferedCanvas.translate(0, -1); canvas.drawBitmap(mBufferedBitmap, 0, 0, null); //draw fps mTextPaint.setColor(Color.WHITE); canvas.drawText(mFpsTracker.getFPSString(), 40, 40, mTextPaint); invalidate(); }

Android缩放/转换canvas不会修改可点击区域

我在这里描述了一个非常类似的问题,除了使用ScaleAnimation,我允许在我的RelativeLayout中进行缩放缩放/平移。 缩放/平移工作完美,但无论我的视图如何平移/缩放,可点击区域都不会随着视觉表示而改变。 这是我的dispatchTouchEvent的样子: @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mScaleGestureDetector != null && mGestureDetector != null) { mScaleGestureDetector.onTouchEvent(ev); mGestureDetector.onTouchEvent(ev); } final int action = ev.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { final float x = ev.getX(); final float y = ev.getY(); mLastTouchX = x; mLastTouchY = y; mActivePointerId = ev.getPointerId(0); break; } […]

如何在android中绘制分区圈?

我想在我的应用程序中绘制这种types的圆圈。 我可以使用Canvas绘制圆圈,但我不知道如何进行分区? 任何人都可以建议我如何划分圆圈? 编辑: – 我想绘制内圈中的线条。 提前致谢。

如何在android中blit()?

我习惯用老式图书馆处理图形(allegro,GD,pygame),如果我想将一个位图的一部分复制到另一个……我只是使用blit。 我试图弄清楚如何在android中做到这一点,我感到非常困惑。 那么……我们将这些Canvas设置为只写,Bitmaps是只读的吗? 真的似乎太愚蠢了,必须有一些我想念的东西,但我真的无法弄明白。 编辑 :更精确… 如果位图是只读的,而canvas只是写,我不能将A插入B,然后B插入C?

矩形canvas中的效果阴影

我画了一个带有canvas的矩形,我想知道是否有任何属性或方式给出一个小阴影。 protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint pincel1 = new Paint(); pincel1.setColor(Color.rgb(151, 217, 69)); RectF rectangle = new RectF(30, 20,200,100); canvas.drawRoundRect (rectangle, 6, 6, pincel1); } 谢谢

使用customview获取输入文本而不使用edittext android

我创建了customview。 每当用户双击视图时,它应显示键盘,用户可以绘制新文本。 Holder是一个扩展视图的自定义视图。 但它正在显示键盘。 如何获取文字? public Holder(Context context, AttributeSet attrs) { super(context, attrs); Log.e(TAG,”EXE”); imm = (InputMethodManager) context. getSystemService(Context.INPUT_METHOD_SERVICE); public boolean onDoubleTap(MotionEvent e) { View view = Holder.this.getRootView(); imm.showSoftInput(view, InputMethodManager.SHOW_FORCED); // imm.showSoftInput(Holder.this, InputMethodManager.SHOW_FORCED); not working

Android 4.1.1上的ComposeShader问题

我只是想为我的Android应用程序实现一个颜色选择器,并在Android 4.1.1上遇到了一个奇怪的问题。 以下代码不会在Android 4.1.1上创建预期的渐变,但它在2.3.7上创建: Shader fadeInRight = new LinearGradient(0, 0, pWidth, 0, 0x00000000, 0xFF000000, Shader.TileMode.CLAMP); Shader blackToWhite = new LinearGradient(0, 0, 0, pHeight, 0xFF000000, 0xFFFFFFFF, Shader.TileMode.CLAMP); Shader whiteMask = new ComposeShader(blackToWhite, fadeInRight, PorterDuff.Mode.DST_IN); Shader blackToColor = new LinearGradient(0, 0, pWidth, 0, 0xFF000000, hue, Shader.TileMode.CLAMP); Shader shader = new ComposeShader(blackToColor, whiteMask, PorterDuff.Mode.SCREEN); paint.setShader(shader); … canvas.drawRect(new Rect(0, […]