废话少说,直接贴代码,希望对大家有帮助。
public class DrawView extends View{
private Canvas pcanvas;
private Paint paint;
private Path path;
private Bitmap originBitmap;
private Bitmap pureBitmp;
private Bitmap bitmapBuff;
private float scaleWidth;
private float scaleHeight;
private float downx = 0,downy = 0;
public DrawView(Context context) {
super(context);
setBackgroundResource(R.drawable.pic);
path = new Path();
paint = new Paint();
paint.setAlpha(0);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
paint.setAntiAlias(true);
paint.setDither(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(15.6f);
initLayer(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
canvas.drawBitmap(bitmapBuff, 0, 0, null);
}
private void initLayer(Context context){
InputStream stream = context.getResources().openRawResource(R.drawable.layer);
originBitmap = BitmapFactory.decodeStream(stream);
int width = originBitmap.getWidth();
int height = originBitmap.getHeight();
Display currentDisplay = ((Activity)context).getWindowManager().getDefaultDisplay();
float newWidth = currentDisplay.getWidth();
float newHeight = currentDisplay.getHeight();
scaleWidth = ((float) newWidth / width);
scaleHeight = ((float) newHeight / height);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
pureBitmp = Bitmap.createBitmap(originBitmap, 0, 0, width, height,matrix, true);
bitmapBuff = Bitmap.createBitmap(pureBitmp.getWidth(),pureBitmp.getHeight(), Bitmap.Config.ARGB_8888);
pcanvas = new Canvas(bitmapBuff);
pcanvas.drawBitmap(pureBitmp, 0, 0, null);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
path.reset();
path.moveTo(downx, downy);
break;
case MotionEvent.ACTION_MOVE:
float upx = event.getX();
float upy = event.getY();
touchMove(upx, upy);
invalidate();
break;
case MotionEvent.ACTION_UP:
pcanvas.drawPath(path, paint);
path.reset();
invalidate();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
private void touchMove(float upx, float upy){
float dx = Math.abs(downx-upx);
float dy = Math.abs(downy-upy);
if (dx >= 4 || dy >= 4) {
path.quadTo(downx, downy, (downx + upx)/2, (downy + upy)/2);
downx = upx;
downy = upy;
}
}
}
分享到:
相关推荐
3. **橡皮擦效果实现步骤** - **创建自定义视图**: 首先,我们需要创建一个继承自UIView的自定义视图类。在这个类中,我们将实现橡皮擦功能。 - **设置画布**: 为视图分配一个位图上下文,通常是通过`...
4. **橡皮擦效果实现**: 要实现橡皮擦效果,首先我们需要在舞台上创建一个可交互的对象,如MovieClip或Sprite,作为“橡皮擦”。当用户移动鼠标时,这个对象将跟随鼠标位置,并根据其形状和大小擦除下方的图像。这...
在C#编程中,实现鼠标拖拽Rectangle橡皮擦功能主要涉及到Windows Forms或WPF(Windows Presentation Foundation)的应用开发。这个功能通常用于图形编辑或画图应用,允许用户通过鼠标选择一个矩形区域来擦除内容。...
默认情况下,QPainter会在画布上绘制颜色,而我们想要实现橡皮擦效果,实际上就是清除或擦除画布上的部分区域,这可以通过设置QPainter的绘图模式为Qt::NoBrush,使其不再填充颜色,或者设置其笔刷透明度来实现。...
6. **橡皮擦效果实现**: - **图像复制**:首先,我们需要保存原始图像,因为橡皮擦操作会改变图像,所以我们需要备份以便可以恢复。 - **创建上下文**:创建一个位图上下文,将原始图像作为其内容。 - **处理...
3. **实现橡皮擦效果**:擦除操作可以模拟为在画布上绘制透明度较高的颜色。在`touchmove`事件处理函数中,使用`cc.Graphics`的`fillRect`或`drawRect`方法,设置填充色为半透明白色(例如`new cc.Color(255, 255, ...
在IT行业中,"橡皮擦效果"通常是指在软件或应用程序中实现的一种交互式功能,让用户能够通过类似橡皮擦的工具擦除某些元素或内容,以达到特定的效果。这种效果常见于图形编辑器、绘图应用或者游戏设计中,为用户提供...
判断是否擦除完毕是指在橡皮擦效果实现后,判断是否所有图形都被擦除。我们可以使用以下代码来实现判断是否擦除完毕: ```cpp bool HelloWorld::myIsDataClear(RenderTexture* pRenderTexture) { // 获取 ...
总之,实现iOS的橡皮擦效果需要掌握Core Graphics、事件处理以及图形混合模式等技术,同时考虑性能和用户体验。对于更复杂的手指形状橡皮擦,可能需要创建自定义的手势识别器来追踪手指的形状,并将其转换为相应的...
实现橡皮擦效果,可以通过在用户触摸路径上擦除覆盖层。可以创建一个`Paint`对象,设置其`Xfermode`为` PorterDuff.Mode.CLEAR`,这样在绘制时会清除目标颜色,露出底层的图像。 5. **遮罩层与底层图像**: 创建...
在这个项目中,"css"目录可能包含了实现橡皮擦效果的样式,如橡皮擦的外观、鼠标形状的改变等。"scss"目录则可能包含SCSS源文件,编译后生成CSS文件。"img"目录可能存放了与效果相关的图像资源,而"fonts"目录可能...
网页H5橡皮擦效果是Web开发中一种创新的交互设计,主要利用HTML5的Canvas元素和JavaScript技术来实现。Canvas作为HTML5的一个重要组成部分,提供了在浏览器端绘制图形的能力,使得开发者能够创建动态、交互式的用户...
要实现橡皮擦效果,我们需要加载一张图片并将其绘制到canvas上。这里假设我们有一个名为`image.jpg`的图片文件: ```javascript var img = new Image(); img.src = 'image.jpg'; img.onload = function() { ctx....
6. **橡皮擦效果实现** 橡皮擦效果可以通过两种方式实现:一是使用`PorterDuff.Mode.CLEAR`模式的`Paint`在当前`Bitmap`上清除颜色;二是创建一个与画板相同大小的白色`Bitmap`作为橡皮擦位图,当用户擦除时,将...
工程源代码,里面的实例是画笔在画布上画轨迹,可以设置画笔颜色、画笔浮雕效果、画笔模糊效应以及srcAtop等效果。还可以实现擦除Erase,供需要在view以及surface上绘图的人参考.有帮助的话给个好评哦
使用JavaScript中的Canvas API实现橡皮擦效果,能够对Canvas上绘制的图形进行擦除操作,实现局部或全部的清除效果。这种效果广泛应用于绘图应用、游戏开发、图片编辑器等场景中,为用户提供了直接与图形交互的能力。...
6. **橡皮擦效果实现**:橡皮擦功能通常通过透明度或者颜色混合来模拟。在Android中,可以通过调整Paint的alpha值或使用Xfermode来实现。 7. **Bitmap与SurfaceView**:为了实现流畅的绘图体验,可能会使用...
此外,橡皮擦操作的精度和效果可能会受到模型质量、匹配参数以及图像预处理步骤的影响。 为了测试橡皮擦功能,你可以创建一个名为`TestEraser`的项目,包含一个主程序,读取图像并调用上述`HalconEraser`类的方法...
总的来说,"惊艳橡皮擦刷新"是一个优秀的iOS开发工具,它利用OC绘图技术实现了QQ的橡皮擦刷新效果,通过简洁的API让开发者能够快速集成到应用中,提升了用户体验,同时也为应用增加了独特的魅力。无论是对于新手还是...
在iOS开发中,实现独特的交互效果常常能提升用户体验,TouchGirl橡皮擦效果代码例子就是一个典型的实例,展示了如何在iOS应用中实现橡皮擦功能。这个项目非常适合iOS开发者,特别是那些正在进行毕业设计或论文研究的...