Articles of Androidcanvas

在canvas上绘制“洞”

我试图在自定义视图的onDraw方法中绘制这样的形状。 不幸的是,我不能“剪切”canvas上的透明圆圈(通过用Color.Transparent绘制圆圈)。 我应该首先在另一个位图中绘制形状,然后在onDraw提供的canvas上绘制它? 或者这是一个更好(更简单)的方式来做到这一点? 这里是我尝试过的代码(适用于Color.WHITE): mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.TRANSPARENT); mPaint.setStrokeWidth(4); mPaint.setStyle(Style.STROKE); canvas.drawColor(getResources().getColor(R.color.black_overlay)); canvas.drawCircle(-3*(this.getBottom()-this.getTop())/4, (this.getTop()+this.getBottom())/2, this.getBottom()-this.getTop(), mPaint); PS:使用Color.WHITE时,我得到了想要的确切形状: 解 @Override public void onDraw(Canvas canvas) { mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); mCanvas.drawColor(getResources().getColor(R.color.black_overlay)); mCanvas.drawCircle(-3*(getHeight())/4, (getHeight())/2, getHeight(), mPaint); canvas.drawBitmap(mBitmap, 0, 0, null); } with mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStrokeWidth(4); mPaint.setStyle(Style.STROKE); mPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); 注意:createBitamp和新的canvas应该被移出onDraw方法。

在现有图像上绘制一个圆

我试图在放置为res/drawable/schoolboard.png的图像上绘制一个圆圈。 图像填充活动背景。 以下不起作用: Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.schoolboard); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.BLUE); Canvas canvas = new Canvas(bitmap); canvas.drawCircle(60, 50, 25, paint); ImageView imageView = (ImageView)findViewById(R.drawable.schoolboard); imageView.setAdjustViewBounds(true); imageView.setImageBitmap(bitmap); 任何帮助将不胜感激。 谢谢。

在Android中绘制曲线边缘的线条

我正在使用canvas.drawLine在android中绘制一些线条,但线条太锋利,但我需要一个弯曲的边缘 在这里,1是我所拥有的,2是我想要达到的,意思是一条曲线而不是直线的边缘 我怎么能做到这一点? 编辑2: 我正在尝试使用Canvas对象来绘制一条线。 但线条有一个尖锐的边缘,我需要一个四舍五入的边缘,我正在使用Paint对象 mPaint = new Paint(); mPaint.setColor(Color.BLACK) 任何帮助表示赞赏。 谢谢

屏幕中央的Android Canvas.drawCircle

我正在使用Canvas.drawCircle在Android laout中绘制一个圆圈。 方法得到3个参数 – 前两个是位置 – x和y 。 是否有可能跳过硬编码的位置并将其绘制为中心?

以编程方式绘制气泡

我想在我的应用程序中有一个precentage值的泡沫,我不能使用9个补丁,因为我希望它是可定制的,它的背景颜色应该是可变的。 它应该看起来像这样 我该怎么做? 这个泡沫会在其内部膨胀,像这个百分比或者一些更大的布局。 也取决于布局(手机或平板电脑),它可能有一方比另一方大(箭头不在中心),所以这是另一个原因,我更喜欢以编程方式

是否可以通过一次调用Canvas.drawText()来显示多色文本?

我想用Canvas.drawText()来显示多色文字。 更具体地说,我想突出传递给drawText()方法的文本的子string。 该文本的forms为具有0个或更多ForegroundColorSpan对象的SpannableString。 看看Canvas代码,看起来传递的CharSequence上的.toString()调用意味着这是不可能的。 有其他的方法吗? 编辑:文本可能会偶尔改变(总变化,而不是增量)。 而且,在自定义视图中可能有多个文本位于不同的不相关位置。

用Javascript发送来自Android的二进制数据

我想通过Android 2.3浏览器上的Javascript API将canvas.toDataURL()发送到Facebook,由于某种原因,它似乎不工作。 我试着发送使用XMLHttpRequest.sendAsBinary但我不断收到 {\ n \“error \”:{\ n \“message \”:\“(#324)需要上传文件\”,\ n \“type \”:\“OAuthException \”,\ n \ “:324 \ n} \ n} 问题是,这在谷歌浏览器的桌面浏览器工作正常。 如何通过Android上的Javascript发送表单二进制数据? 示例代码在这里

绘制在canvas上和多个绘画对象

我试图做一个应用程序,用户可以select模糊图像或者可以select在屏幕上绘制(用户也可以在一个canvas上执行这两个)。 我有它的工作,但是,我有一个奇怪的问题,第一次绘制后,模式从模糊变为绘画,反之亦然。 请看下面的图片。 油漆模式 垂直绘制的path是当用户select了绘画模式时。 正如你可以看到第一个path包含来自模糊涂料对象以及油漆对象(红色笔画)的油漆。 现在绘制的任何后续path工作正常。 BLUR模式 同样,你可以看到,在绘制两条垂直path之后,用户将模式切换为模糊,并在此模式下绘制水平path。 这一次类似于上面的第一个path是两个画图对象的混合,后续的path工作正常。 请参阅下面的代码,如果你能提出什么可能导致问题,这将是很好的。 ArrayList<DrawCommands> path_color_stroke_list = new ArrayList<DrawCommands>(); ArrayList<DrawCommands> path_color_stroke_list_undone = new ArrayList<DrawCommands>(); ArrayList<BlurCommands> path_blur_list = new ArrayList<BlurCommands>(); ArrayList<BlurCommands> path_blur_list_undone = new ArrayList<BlurCommands>(); ArrayList<EditTextDrawCommands> editTextList = new ArrayList<EditTextDrawCommands>(); private Bitmap mBitmap; private Paint transparentPaint; private Paint mPaint; public DrawingPanel(Context context, String imageStorageDir) { super(context); appContext = context; […]

试图创build一个橡皮擦canvas

我正在创build一个使用下面的DrawingSurfaceView类的绘图应用程序。 在那个类中,我有一个叫做橡皮擦的画笔,用户可以打开和closures。当在那个油漆是想橡皮擦什么是在它的path。 但它只是画一条黑线。 当我将canvas保存为透明PNG橡皮擦是正确的,但在屏幕上显示黑色.. EraserPaint的手机屏幕截图,用来在blob上写“Erik” 从canvas保存PNG 橡皮擦看起来像这样: eraserPaint = new Paint(); eraserPaint.setAlpha(0); eraserPaint.setColor(Color.TRANSPARENT); eraserPaint.setStrokeWidth(60); eraserPaint.setStyle(Style.STROKE); eraserPaint.setMaskFilter(null); eraserPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); eraserPaint.setAntiAlias(true); WHOLE类 public KNDrawingSurfaceView(Context c, float width, float height, KNSketchBookActivity parent) { super(c); myWidth = width; myHeight = height; mBitmap = Bitmap.createBitmap((int) myWidth, (int) myHeight, Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); _parent = parent; mEmboss = new EmbossMaskFilter(new […]

Android更改canvas背景颜色,而不会丢失任何图纸

我试图find一种方法来设置canvas的背景,从自定义颜色select器拾取的颜色,而不删除任何图纸。 我试图创build一个可以在canvas上绘制的应用程序,并将其保存为PNG。 但是当我为当前的canvas设置一个新的背景时,所有的图画都消失了。 我正在使用这样的东西: mCanvas.drawColor(picker.getColor()); 任何想法如何让事情工作?