如何正确的实现橡皮擦功能
很多朋友遇到过这个问题,如何实现橡皮擦功能呢?
简单的解决方法是取背景色然后绘制,这个是不对的。应该说是很迫不得已的选择!
我们希望清除图片数据再具体像素上的数据或者都赋值为0.
CGContextSetBlendMode 函数会影响绘制时候的混色算法
例如点击橡皮擦后设置
CGContextSetBlendMode(context, kCGBlendModeClear);
这样再绘制时就会清除图像数据。
其它模式还包括
kCGBlendModeNormal
kCGBlendModeMultiply
kCGBlendModeScreen
kCGBlendModeOverlay
kCGBlendModeDarken
kCGBlendModeLighten
kCGBlendModeColorDodge
kCGBlendModeColorBurn
kCGBlendModeSoftLight
kCGBlendModeHardLight
kCGBlendModeDifference
kCGBlendModeExclusion
kCGBlendModeHue
kCGBlendModeSaturation
kCGBlendModeColor
kCGBlendModeLuminosity
等
但是还需要继续深入。我们的绘制操作应该是对一个CGContextRef进行,这个东西(看Ref就知道实际上是个指针)的创建过程还会影响到我们的橡皮擦效果。
使用CGBitmapContextCreate函数创建CGContextRef过程中,
CGBitmapContextCreate(<#void * data#>, <#size_t width#>, <#size_t height#>, <#size_t bitsPerComponent#>, <#size_t bytesPerRow#>, <#CGColorSpaceRef colorspace#>, <#CGBitmapInfo bitmapInfo#>)
最后一个参数CGBitmapInfo在这里很关键。
只有使用kCGImageAlphaPremultipliedFirst才会让该函数创建一个XRGB Context,这样的bitmap在绘制时才会真正透明alpha为0的部分. 就会出现擦去上面一层的时候露出底下的图像。
如果使用kCGImageAlphaNoneSkipLast或其它.... 会创建一个ARGB Context,这样的结果是所以alpha为0的部分都是以黑色绘制。
转自:
http://www.cocoachina.com/bbs/read.php?tid=44397
分享到:
相关推荐
4. 可能还需要实现橡皮擦功能,即清除部分线条,这可以通过改变绘图颜色为背景色来实现。 5. 实时刷新视图以显示新绘制的线条,这可以通过调用setNeedsDisplay()方法来完成。 总的来说,"Gesturegame02"项目结合了...
- 用户交互:可以添加橡皮擦功能,允许用户擦除部分线条;或者提供选择颜色、线条粗细的选项。 总之,“cocos2d-iphone 手指画线”项目是关于如何在Cocos2d-iPhone框架下利用触摸事件和图形渲染技术实现用户交互的...
在iOS开发中,使用iPhone SDK进行应用程序开发时,有时...在实际项目中,还可以进一步扩展,比如添加橡皮擦功能,或者支持多点触控来绘制更复杂的图形。理解并熟练掌握这些知识点,对于提升iOS应用的用户体验至关重要。
6. **橡皮擦功能(Eraser)**: 橡皮擦功能可以通过设置Paint的Alpha值来实现,降低画笔的不透明度使其类似擦除的效果。也可以创建一个特殊的“橡皮”Path,覆盖在原来的路径上,实现擦除部分绘图的功能。 7. **撤销...
4. **橡皮擦功能**:内置橡皮擦工具,可以擦除部分或全部绘制的线条,提供精确的编辑能力。 5. **图层管理**:支持图层概念,用户可以在不同图层上绘制,方便进行分组和独立编辑。 6. **手势识别**:通过手势识别...
橡皮擦功能通过清除部分或全部画布上的内容来实现。可以创建一个橡皮擦模式,使得在该模式下绘制时,`CGContextClearRect`函数将清除指定区域的颜色,模拟橡皮擦的效果。 6. **保存与加载签名图像**: 用户完成...
同时,用户还可以使用“标记”功能添加文字、绘图,甚至可以利用橡皮擦功能进行擦除。对于分享到社交媒体或发送给朋友的照片,这些编辑功能无疑增加了趣味性和个性化。 总的来说,iOS的个人信息修改与图片编辑功能...
9. **用户界面设计**:除了基本的画布,还需要设计其他UI元素,如颜色选择器、工具栏(选择笔刷、橡皮擦等)以及保存/分享按钮。 10. **测试与调试**:确保在不同设备和iOS版本上进行测试,以确保兼容性和性能。 ...
PanoramaControl通常用于创建类似iPhone的多面板界面,而ScrollViewer则提供基本的滚动功能。在这里,根据需求,我们可以选择其中一个或结合使用,以实现滑动解锁的动态效果。 3. **故事板(Storyboard)和动画...
- 橡皮擦功能通常是通过改变笔触颜色为背景色或透明色,同时保持画线的逻辑来实现。 - 可以使用`addQuadCurve(to:controlPoint:)`或`addCurve(to:controlPoint1:controlPoint2:)`等方法来创建曲线路径,模拟橡皮擦...
- 提供多种颜色的画笔和橡皮擦,还可以选择线条粗细,使得绘图更具表现力。 3. **多媒体支持** - **图片插入**: 可以插入照片或者截图,将视觉信息整合到备忘录中。 - **链接插入**: 用户可以添加网页链接,快速...
我们可以通过设置CGContext的相关属性来改变线条的颜色和宽度,使用橡皮擦时,只需设置颜色为透明即可。 6. **涂鸦功能**:涂鸦的核心在于记录用户的触摸轨迹。我们可以维护一个路径数组,每当触摸事件发生时,将其...
用户可以自由选择各种调整画笔,并通过调整设置来优化局部区域,同时还可以使用橡皮擦功能来擦除不小心画多的部分。此外,画笔画过区域的查看功能使得用户可以清楚地看到所操作的区域,而局部调整功能则允许用户通过...
SDK可能会提供多笔同步、橡皮擦、高亮等工具,增强交互体验。 7. **影音共享**: 影音共享功能让用户能够播放和分享音频和视频文件,可能是为了教学目的,也可能是娱乐分享。SDK可能包含媒体文件的预处理、编码和...
在编辑功能方面,IcoFX提供了丰富的绘图工具,如画笔、橡皮擦、填充、线条、形状等,让设计师可以自由创作。同时,软件内置了大量的预设形状和图标模板,方便快速构建基础结构。除此之外,还有特效工具,如模糊、...
在iOS开发中,理解绘图原理至关重要,因为画板应用需要实现基本的绘图操作,如选择颜色、线条宽度、橡皮擦功能等。这可能涉及到对Core Graphics的深度理解,包括路径绘制、颜色混合、透明度处理等。同时,为了实现...
大部分截图软件都有内置的编辑工具,如画笔、橡皮擦、马赛克等。完成编辑后,选择合适的格式(如JPEG、PNG、GIF)保存图片。 六、移动设备截图 手机和平板也有截图功能,iOS设备可以通过同时按住电源键和Home键...
3. **绘图工具**:编辑器通常会提供不同形状的绘图工具,如笔刷、橡皮擦等。这需要实现一系列事件处理函数,监听用户的触摸动作,并根据选择的工具更新画布。 4. **保存与加载**:为了保存作品,我们需要将像素数据...