`
咖啡动力
  • 浏览: 441143 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

iphone(objective-c)相当于j2me的drawRegion方法 截取部分图片显示到指定位置

阅读更多

 

图片(UIImage*) img

要截取的起始坐标sx:(int) sx1 sy:(int)sy1

要截取的长度和宽度sw:(int) sw1 sh:(int) sh1

最终要显示的坐标desx:(int) desx1 desy:(int)desy1

 

-(UIImage*)objectiveDrawRegion:(UIImage*) img sx:(int) sx1 sy:(int)sy1 sw:(int) sw1 sh:(int) sh1 desx:(int) desx1 desy:(int)desy1{

[self saveImage:img name:@"objectiveDrawRegion1.png"];

 

//创建图片缓冲

void *imageDataRegion=malloc(screenWidth*screenHeight*32);

CGColorSpaceRef iColorSpaceRegion=CGColorSpaceCreateDeviceRGB();

    CGContextRef iDeviceRegion=CGBitmapContextCreate(imageDataRegion,screenWidth,screenHeight,8,4*screenWidth,iColorSpaceRegion,kCGImageAlphaPremultipliedLast);

 

 

//剪切区域

    CGRect clipRegion=CGRectMake(sx1,sy1,sw1,sh1);

    CGContextClipToRect(iDeviceRegion, clipRegion);

   

    CGFloat widthf=img.size.width;

    CGFloat heightf=img.size.height;

 

CGRect  cg=CGRectMake(0.0, 0.0, widthf, heightf);

//画底图

    CGContextDrawImage(iDeviceRegion,cg, img.CGImage);

//将缓冲形成图片

    CGImageRef ioffRegion=CGBitmapContextCreateImage(iDeviceRegion);

  

CGRect  cg1=CGRectMake(desx1, desy1, sw1, sh1);

UIImage *ui=[UIImage imageWithCGImage:ioffRegion];

 

CGContextDrawImage(当前context,cg1, ui.CGImage);

//清除缓冲

  CGColorSpaceRelease(iColorSpaceRegion);

  CGContextRelease(iDeviceRegion);

  CGImageRelease(ioffRegion);

  free(imageDataRegion);

//   iDeviceRegion=NULL;

//   imageDataRegion=0;

return ui;

}

 

 

//这个方法更高效

/*

 实现j2medrawRegion方法

 sx 图片剪切的x位置

 sy 图片剪切的y位置

 sw 图片剪切的宽度

 sh 图片剪切的高度

 dx 剪切后的x位置

 dy 剪切后的y位置

 device 上下文

 */

-(void) objectiveDrawRegion:(UIImage*) img 

sx:(int) sx1    

sy:(int) sy1 

sw:(int) sw1 

sh:(int) sh1 

dx:(int) dx1

dy:(int) dy1

device:(CGContextRef)idevicecopyOffscr

{

CGRect rect = CGRectMake(sx1, sy1, sw1, sh1);

CGImageRef imgRef = CGImageCreateWithImageInRect(img.CGImage, rect);

int dy1Trans = screenHeight - dy1 - sh1;

CGContextDrawImage(idevicecopyOffscr

  , CGRectMake(dx1, dy1Trans, sw1, sh1)

  , imgRef);

CGImageRelease(imgRef);

 

 

 

 

分享到:
评论

相关推荐

    基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip

    基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源...

    贪食蛇项目-基于JAVA的J2ME的手机游戏开发(LW+源代码).zip

    贪食蛇项目-基于JAVA的J2ME的手机游戏开发(LW+源代码).贪食蛇项目-基于JAVA的J2ME的手机游戏开发(LW+源代码).贪食蛇项目-基于JAVA的J2ME的手机游戏开发(LW+源代码).贪食蛇项目-基于JAVA的J2ME的手机游戏开发(LW+源...

    j2me----api

    j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_1_工程代码

    动画的实现通常依赖于定时器(Timer)和线程(Thread),通过不断改变蛇的位置来创建连续移动的效果。同时,蛇的头部和身体的单元格也需要维护,确保它们不会自我碰撞。 "代码包,图片包"是指项目的组织结构,通常...

    俄罗斯方块 二位数组版 -----J2ME

    《二维数组实现的J2ME版俄罗斯方块详解》 在移动设备的早期时代,Java 2 Micro Edition(J2ME)是开发游戏和应用程序的主流平台之一。本篇文章将深入探讨一个基于J2ME的二维数组实现的俄罗斯方块项目,让我们一起...

    NIIT-SM4-J2ME

    **J2ME技术详解** J2ME,全称为Java 2 Micro Edition,是Java平台的一个重要组成部分,主要用于开发和部署在资源有限的嵌入式设备上的应用程序,如移动电话、智能手表、数字电视等。在NIIT的第四学期课程中,J2ME是...

    JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_4_增加消除行声音

    在本教程中,我们将深入探讨如何使用JAVA的J2ME平台进行手机游戏开发,特别是针对经典游戏“俄罗斯方块”进行声音效果的添加。J2ME(Java Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--扫雷(2)-不含线程

    扫雷(2)是在扫雷(1)的基础上增加 完善了部分代码基本逻辑不变! 使得游戏更好玩了,代码两也增加到400行,比较适合初学者,可读性强,有详尽的代码注释。 数字键1标红旗,不确定,取消标记。数字键3显示/...

    Hungry Minds - Wireless Programming With J2ME.pdf

    Hungry Minds - Wireless Programming With J2ME.pdf

    nanoXML-j2me.jar j2me xml 解析

    这是一个关于在 j2me中解析xmlr jar 包,与j2se解析xml 有所不同,所以使用的jar 包也不同,希望对你有帮助。

    计算机软件-编程源码-J2ME的俄罗斯方块.zip

    【标题】"计算机软件-编程源码-J2ME的俄罗斯方块.zip" 指的是一份使用Java ME(J2ME)平台开发的俄罗斯方块游戏的源代码包。J2ME,全称为Java 2 Micro Edition,是Java的一个子集,主要用于嵌入式设备和移动设备的...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇

    与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动速度,...

    ToolME-0.2.0.zip j2me开发工具类

    如果是JAR文件,那么它可以直接被引入到J2ME项目中使用,通过调用其中的类和方法来辅助开发。 J2ME的开发流程一般包括以下几个步骤: 1. **编码**:使用支持J2ME的IDE(如NetBeans或Eclipse)编写Java源代码。 2. *...

    j2me_https.rar_ j2me-https_j2me_j2me htt_j2me htt_j2me https

    在移动开发领域,Java 2 Micro Edition(J2ME)是一种广泛用于创建小型设备和嵌入式系统的应用程序的平台。由于其轻量级和跨平台的特性,J2ME在功能手机时代尤其流行,用于开发各种应用,包括网络通信。在标题"j2me_...

    利用Android的Matrix类实现J2ME的drawRegion的镜像方法

    这篇博文"利用Android的Matrix类实现J2ME的drawRegion的镜像方法"探讨了如何在Android环境中复现J2ME的`drawRegion`功能,该功能通常用于在画布上绘制图像的特定区域并支持各种效果,如翻转(镜像)。 在J2ME中,`...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_2

    与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_1

    贪吃蛇升级版本,与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是...

    基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip

    基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME...

    跟我学制作Pak文件j2me.rar_"www.matrix.org.cn"_j2me_j2me matrix.jar_j2me

    在J2ME(Java 2 Micro Edition)开发中,Pak文件是一种常见的资源打包格式,主要用于存储游戏或应用程序中的图片、音频、配置文件等非代码数据。本教程将引导你了解如何在J2ME环境中创建Pak文件,以及如何在程序中...

Global site tag (gtag.js) - Google Analytics