(IOS)截图Demo

思路是建一个UIView的子类,获取划动出的矩形,用协议将矩形传递给代理对象,依据该矩形完成图像数据的截取,并显示出来。

截图视图类:

#import <UIKit/UIKit.h>@protocol UICutImgDelegate;@interface BIDCutView : UIView
{CGPoint startPoint;CGRect targetRect;id <UICutImgDelegate> _delegate;
}
@property (assign , nonatomic) id delegate;
@end@protocol UICutImgDelegate <NSObject>
-(void)cutImgWithRect:(CGRect) aRect;
-(void)clear;
@end

 

#import "BIDCutView.h"@implementation BIDCutView@synthesize delegate=_delegate;- (id)initWithFrame:(CGRect)frame
{self = [super initWithFrame:frame];if (self) {// Initialization code
    }return self;
}- (void)drawRect:(CGRect)rect
{CGContextRef ctx = UIGraphicsGetCurrentContext();CGContextSetLineWidth(ctx, 1.5);CGContextSetStrokeColorWithColor(ctx, [UIColor purpleColor].CGColor);CGFloat lengths[2] = {15.0,5.0};CGContextSetLineDash(ctx, 2, lengths, 2);CGContextStrokeRect(ctx, targetRect);  //画虚线矩形
}-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{[self.delegate clear];startPoint=[[touches anyObject] locationInView:self];
}-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{CGPoint currentPoint=[[touches anyObject] locationInView:self];targetRect = CGRectMake(startPoint.x, startPoint.y, currentPoint.x-startPoint.x, currentPoint.y-startPoint.y);[self setNeedsDisplay];
}-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{if (self.delegate && [self.delegate respondsToSelector:@selector(cutImgWithRect:)]) {[self.delegate cutImgWithRect:targetRect];}
}
@end

 

视图控制器:(作为截图视图的代理对象)

#import <UIKit/UIKit.h>
#import "BIDCutView.h"@interface BIDRootViewController : UIViewController <UICutImgDelegate>@end

 

#import "BIDRootViewController.h"
#import "BIDSimpleTouchFun.h"
#import "BIDDiscount.h"@implementation BIDRootViewController-(void)loadView
{[super loadView];
  //
self.view=[[[BIDDrawViewalloc] initWithFrame:CGRectMake(0, 0, 320, 460)] autorelease];
    BIDCutView *cutView=[[BIDCutView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];cutView.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"abc.jpg"]];cutView.delegate = self;[self.view addSubview:cutView];[cutView release];
}
- (void)viewDidLoad
{[super viewDidLoad];
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];
}-(void)cutImgWithRect:(CGRect)aRect
{UIImage *img=[UIImage imageNamed:@"abc.jpg"];CGImageRef imgRef = img.CGImage;CGImageRef targetImgRef = CGImageCreateWithImageInRect(imgRef, aRect);  //图像的截取UIImage *targetImg=[UIImage imageWithCGImage:targetImgRef];UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, aRect.size.width, aRect.size.height)];imgView.image = targetImg; //把截取得的图像显示到视图中去imgView.tag=1000;[self.view addSubview:imgView];[imgView release];
}-(void)clear
{UIImageView *imgView=(UIImageView *)[self.view viewWithTag:1000];[imgView removeFromSuperview];
}

效果: 

转载于:https://www.cnblogs.com/mingfung-liu/p/3230038.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ1033 Defragment

题目来源&#xff1a;http://poj.org/problem?id1033 题目大意&#xff1a; 某操作系统的文件系统中&#xff0c;所有的磁盘空间被分为N个大小相等的cluster&#xff0c;编号1至N。每个文件占用一个或多个cluster。所有没有被文件占用的cluster称为是空闲的。磁盘上的一个文件…

pcb过孔漏铜_【企业资讯】大正瑞地:专注PCB药水二十年,品质、性能可靠

企业简介公司拥有领先的技术及产品、顾问型服务、PCB药水全系列体系化运行。沉铜、电镀、中/超粗化、减铜药水、化镍金、OSP、显影、退膜及辅助物料等全系列PCB药水&#xff0c;自主研发&#xff0c;拥有核心技术&#xff0c;自成体系&#xff0c;可以全面、系统的供应产品及全…

前端切换视图_前端架构 101(五):从 Flux 进化到 Model-View-Presenter

李熠&#xff1a;前端架构 101&#xff08;一&#xff09;&#xff1a;在谈论它们之前我们需要达成的共识​zhuanlan.zhihu.com李熠&#xff1a;前端架构 101&#xff08;二&#xff09;&#xff1a; MVC 初探​zhuanlan.zhihu.com李熠&#xff1a;前端架构 101&#xff08;三&…

如何连接安卓手机_安卓手机如何使用AirPods

苹果公司推出的无线蓝牙耳机AirPods可以说是市面上最好的无线耳机&#xff0c;配合iPhone使用能够给你带来畅快舒适的体验。有很多小米华为oppo&#xff0c;vivo等安卓手机用户也在问了&#xff0c;安卓手机能够支持AirPods呢&#xff0c;答案是肯定的。图片来源&#xff1a;网…

晒一下我的代码生成器

经过最近一段新的尝试【BS架构】,之前的编程一直是CS架构&#xff0c;但也总是在忙那些项目&#xff0c;没法整理出一套符合自己团队的一套编程体系和架构&#xff1b; 新的起点&#xff0c;又是一个新的挑战&#xff0c;现在已经是03年&#xff0c;最早做的时候是07年&a…

matlab自动排版,工具方法| Matlab 简单绘图与排版

matlab启动界面 来自百度百科对于很多教师与学生&#xff0c;Matlab是做数值计算很好的一款软件。收集、整理、分析数据十分的方便&#xff0c;我们也可以通过Matlab画出相对比较好看的图。这里简单总结下Matlab的画图方式与排版&#xff0c;供初学者参考、交流。Matlab基本都是…

坦克大战代码_坦克大战系列文章-坦克大战简介

前言本篇主要对坦克大战Robocode做一个简单的介绍&#xff0c;对java最初的人工智能算法演练工具做一个了解坦克大战简介今天我们要谈的是java 最初的基于人工智能算法的仿真模拟坦克大战&#xff0c;全称Robocode。Robocode 是一位IBM的工程师 Mat Nelson 用Java 语言所创造的…

php查询文件名,php怎么查询文件名

php查询文件名的方法&#xff1a;可以利用pathinfo()函数来查询。pathinfo()函数以数组的形式返回关于文件路径的信息&#xff0c;包括目录路径、文件名等&#xff0c;如&#xff1a;【print_r(pathinfo("/testweb/test.txt"))】。pathinfo() 函数以数组的形式返回关…

基于live555的视频直播 DM368IPNC RTSP分析

因需要&#xff0c;从个人的理解顺序和需求角度对live555的分析与开发整理&#xff0c;包含RTSP Server与RTSP Client、如何直播H.264流与JPEG流等&#xff0c;均进行了探讨&#xff0c;对live555的初学者有一定的指导意义。 本人习惯使用excel归档&#xff0c;所以本文均为exc…

图像风格迁移_图像风格迁移—谷歌大脑团队任意图像风格化迁移论文详解

点击蓝字关注我们AI研习图书馆&#xff0c;发现不一样的世界风格迁移图像风格化迁移是一个很有意思的研究领域&#xff0c;它可以将一张图的风格迁移到另外一张图像上&#xff0c;由此还诞生了Prisma和Ostagram这样的商业化产品。本文&#xff0c;我们将介绍谷歌大脑团队的一篇…

php公交查询系统源代码,基于Smarty公交查询系统的设计与实现(PHP,MySQL)

基于Smarty公交查询系统的设计与实现(,MySQL)(任务书,开题报告,中期报告,毕业论文11000字,程序代码,MySQL数据库,答辩PPT)本系统主要分为前台页面、后台逻辑及数据库三大部分。前台页面主要由首页&#xff0c;各查询页面及管理数据页面等&#xff0c;后台逻辑则分别针对各个页面…

xilinx芯片管脚使用限制_修复焊接BGA芯片过程

我们能够享受现代电子设备小巧玲珑但又功能强大的优点&#xff0c;得益于芯片的小型封装的优势&#xff0c;其中一个最为优秀的封装形式就是锡球阵列封装(BGA)。这种封装形式芯片的管脚是分布于芯片底部的一系列点阵排列的焊盘&#xff0c;通过均匀的锡球与PCB板连接在一起。比…

matlab表达式部分项求和,matlab如何得到符号表达式中某一部分项的系数

matlab如何得到符号表达式中某一部分项的系数mip版 关注:238 答案:2 悬赏:0解决时间 2021-01-19 05:05已解决2021-01-18 14:17syms t1 t2 t3;y4*sin(t1)*cos(t2)cos(t1)sin(t1)*sin(t2)5*sin(t1)*cos(t2)*sin(t3);如何得到sin(t1)*cos(t2)的系数表达式(45*sin(t3))&#xff…

Eclipse与github整合完整版

最近朋友都推荐使用github管理自己的项目,而且免费用户可以有5个仓库,恰好我也想了解下git,借此机会学习一下.github官方指南使用独立第三方git工具来进行版本控制,并不借助于eclipse,但我觉得eclipse肯定也有插件来解决这类问题,就像subclipse一样. 安装egit egit目前应该是ec…

A20 看门狗驱动

任务&#xff1a;板子上增加了独立的复位芯片SP706S&#xff0c;为了在设备死机的时候重启系统。 资源&#xff1a;芯片使能管脚 PH13 喂狗管脚 PI16 1. 为了省事&#xff0c;直接在drivers/sunxi_gpio/gpio_sw.c这个文件里加了&#xff0c;这里有现成的操作GPIO管脚的函…

php 5.6连接sqlserver,wamp php5.6连接sqlserver

wamp php5.6连接sqlserver2018-09-28 16:05:36首先PHP5.6并未提供链接sqlserver的扩展,需要到微软下载相应版本的PHP链接sqlserver的驱动扩展,php5.6对应的是Version 3.2 supports PHP 5.6, 5.5, and 5.4 on Windows放到php文件夹下/ext扩展文件夹里.并在php.ini中将扩展启用,我…

关于非root用户配置ssh运行环境

第一步&#xff0c;我们创建Linux用户&#xff1a; 用root用户登录 A&#xff0e;增加用户组命令&#xff1a;groupadd –g 500 hadoop //此处500是手动设置groupID Linux保留前500 ID号 &#xff1b; B&#xff0e;增加用户命令&#xff1a;useradd –u 500 –g 5…

linux网络设备—mdio总线

一.结构体 struct mii_bus {const char *name; //总线名char id[MII_BUS_ID_SIZE]; //idvoid *priv; //私有数据int (*read)(struct mii_bus *bus, int phy_id, int regnum); //读方法int (*write)(struct mii_bus *bus, int phy_id, int regnum, u16 val); //写方法int (*rese…

linux arp 文件,LINUX 下ARP 的查找

由于内网无法正常连接网关&#xff0c;远程登陆网关已无法实现。因此一切操作均在网关服务器本地进行。3.1 在服务器本地端口抓包[rootRouted-Server tmp]# tcpdump -nn -i eth1 > error.networktcpdump: listening on eth12749 packets received by filter0 packets…

Android的Recovery中font_10x10.h字库文件制作

任务是要汉化Android中的Recovery&#xff0c;就了解了bootable/recovery/minui/font_10x18.h这个英文字库的来历&#xff0c;最终汉化的时候并没有自己汉字字库&#xff0c;用的github上现成的&#xff0c;但font_10x18.h来历短暂的留存在脑子里边不如记下来&#xff0c;这样会…