我的应用程序中唯一仍然是软件渲染的部分是渲染一个视图,其中我需要绘制一个圆形的位图。我使用clipPath来裁剪需要渲染成圆形的位图。
我知道clipPath不是硬件加速的,但我正在寻找一种算法,它可以让我使用硬件加速来提供同等的功能。
具体地说,我需要创建源位图的圆形裁剪区域,并将其渲染到我的画布上。
发布于 2013-07-10 16:11:53
如果你必须使用clipPath,你可以关闭硬件加速,如下所示。
<application
android:label="@string/application_name"
android:hardwareAccelerated="false">您还可以控制应用层、活动层、窗口层和视图层之间的硬件加速。此Hardware Acceleration article on Android Development web site上描述了详细信息。
发布于 2013-05-11 19:50:56
你可以尝试这样做,尽管我不确定它是硬件加速的:
在onCreate中:
创建一个使用http://developer.android.com/reference/android/graphics/Paint.html#setXfermode(android.graphics.Xfermode)
的目标模式
在onLayout中:
在onDraw中:
中创建的bitmapPaint在画布内绘制位图
位图应该只在圆内渲染。
发布于 2013-05-11 20:05:12
如果您的位图更改不多,请将其裁剪一次,将其裁剪为新的位图,然后在onDraw中绘制裁剪后的位图。
下面是一个如何从源位图裁剪圆的示例
Bitmap bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
Canvas canvas = new Canvas(bitmap);
paint.setColor(Color.RED);
// Draw your shape here
canvas.drawCircle(cx, cy, radius, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(sourceBitmap, 0, 0, paint);https://stackoverflow.com/questions/11972926
复制相似问题