关于把图片内容绘制到view中

1、把图片内容绘制到view中需要调用的方法

   原理:见官方文档

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
    for (int i = 0; i < [self.imageLayerNameArray count]; i++)
    {
        NSString *imageName =[self.imageLayerNameArray objectAtIndex:i];
             NDLog(@"%@",imageName);
        
        NSString *imagePath = [NDTCacheCustomPath getResourcePath:imageName];
        UIImage *image = [[UIImage alloc]initWithContentsOfFile:imagePath];
        [image drawInRect:rect];
    }
}
2、如果需要重绘,没必要重新创建view,调用

   

-(void)setImageLayerNameArray:(NSMutableArray *)imageLayerNameArray
{
    _imageLayerNameArray = imageLayerNameArray;
    [self setNeedsDisplay];
}
setneedsdisplay方法,原理,见官方文档

将ImageView绘制到SurfaceView通常需要通过Android图形处理库,如OpenGL ES或者SurfaceHolder API。以下是一个简单的步骤: 1. **创建SurfaceView**: 首先,在XML布局文件添加SurfaceView,并设置一个对应的SurfaceHolder: ```xml <SurfaceView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. **获取SurfaceHolder**: 在Activity或Fragment,获取SurfaceView的SurfaceHolder并设置回调: ```java SurfaceView surfaceView = findViewById(R.id.surface_view); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { // 创建或初始化图像视图 ImageView imageView = new ImageView(context); // 将图片设置为ImageView的背景 imageView.setImageBitmap(bitmap); // 创建位图画布 Canvas canvas = holder.lockCanvas(); try { // 将ImageView绘制方法应用于canvas imageView.draw(canvas); } finally { holder.unlockCanvasAndPost(canvas); } } // ...其他方法实现 }); ``` 3. **处理表面变化**: 当Surface大小改变时(例如旋转设备),你需要更新绘制过程以适应新的尺寸。这可以在`surfaceChanged()`回调成: ```java @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 更新canvas大小 Canvas canvas = holder.lockCanvas(); if (canvas != null) { // 适应新尺寸并重新绘制 // ... holder.unlockCanvasAndPost(canvas); } } ``` 4. **注意释放资源**: 在`surfaceDestroyed()`回调里,记得释放相关资源以避免内存泄漏。 **相关问题--:** 1. SurfaceView与SurfaceHolder的区别是什么? 2. 如果不想使用OpenGL ES,还有哪些替代方案可以将图片绘制到SurfaceView上? 3. 如何处理SurfaceView的刷新率问题?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值