图片(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;
}
//这个方法更高效
/*
实现j2me的drawRegion方法
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潜艇大战源...
贪食蛇项目-基于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
动画的实现通常依赖于定时器(Timer)和线程(Thread),通过不断改变蛇的位置来创建连续移动的效果。同时,蛇的头部和身体的单元格也需要维护,确保它们不会自我碰撞。 "代码包,图片包"是指项目的组织结构,通常...
《二维数组实现的J2ME版俄罗斯方块详解》 在移动设备的早期时代,Java 2 Micro Edition(J2ME)是开发游戏和应用程序的主流平台之一。本篇文章将深入探讨一个基于J2ME的二维数组实现的俄罗斯方块项目,让我们一起...
**J2ME技术详解** J2ME,全称为Java 2 Micro Edition,是Java平台的一个重要组成部分,主要用于开发和部署在资源有限的嵌入式设备上的应用程序,如移动电话、智能手表、数字电视等。在NIIT的第四学期课程中,J2ME是...
在本教程中,我们将深入探讨如何使用JAVA的J2ME平台进行手机游戏开发,特别是针对经典游戏“俄罗斯方块”进行声音效果的添加。J2ME(Java Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如...
扫雷(2)是在扫雷(1)的基础上增加 完善了部分代码基本逻辑不变! 使得游戏更好玩了,代码两也增加到400行,比较适合初学者,可读性强,有详尽的代码注释。 数字键1标红旗,不确定,取消标记。数字键3显示/...
Hungry Minds - Wireless Programming With J2ME.pdf
这是一个关于在 j2me中解析xmlr jar 包,与j2se解析xml 有所不同,所以使用的jar 包也不同,希望对你有帮助。
【标题】"计算机软件-编程源码-J2ME的俄罗斯方块.zip" 指的是一份使用Java ME(J2ME)平台开发的俄罗斯方块游戏的源代码包。J2ME,全称为Java 2 Micro Edition,是Java的一个子集,主要用于嵌入式设备和移动设备的...
与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动速度,...
如果是JAR文件,那么它可以直接被引入到J2ME项目中使用,通过调用其中的类和方法来辅助开发。 J2ME的开发流程一般包括以下几个步骤: 1. **编码**:使用支持J2ME的IDE(如NetBeans或Eclipse)编写Java源代码。 2. *...
在移动开发领域,Java 2 Micro Edition(J2ME)是一种广泛用于创建小型设备和嵌入式系统的应用程序的平台。由于其轻量级和跨平台的特性,J2ME在功能手机时代尤其流行,用于开发各种应用,包括网络通信。在标题"j2me_...
这篇博文"利用Android的Matrix类实现J2ME的drawRegion的镜像方法"探讨了如何在Android环境中复现J2ME的`drawRegion`功能,该功能通常用于在画布上绘制图像的特定区域并支持各种效果,如翻转(镜像)。 在J2ME中,`...
与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是增加蛇的移动...
贪吃蛇升级版本,与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包,图片包,结构清晰,代码量500行,地图生成的简单算法,和播放动画的简单算法!有矩形碰撞,升级就是...
基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME...
在J2ME(Java 2 Micro Edition)开发中,Pak文件是一种常见的资源打包格式,主要用于存储游戏或应用程序中的图片、音频、配置文件等非代码数据。本教程将引导你了解如何在J2ME环境中创建Pak文件,以及如何在程序中...