NSView上实现图片(nsview)的旋转拖拽

原理:在实际操作中以一个canvasView 作为画布,然后定义一个关于图片的数据,画在一个一一对应的NSView中,然后在canvasView最上面加一层拖拽框view 作相关拖拽,旋转操作。例子代码为伪代码,只为说明思路,并未完整实现。读者可以自行根据实际需要自行实现。


1.数据结构


图片数据

@interface ImageData : NSObject {

@property (nonatomic, assign) double rotation;             

@property (nonatomic, assign) NSPoint centerPoint; // 在canvasview bounds 上显示 图片的中心点

@property (nonatomic, assign) NSSize mediaSize;a

@property (nonatomic, assign) CGImageRef p_originImageRef_;// 用于画图

@property (nonatomic, assign) CGImageRef p_showImageRef_;         // 各种处理之后画图

@property (nonatomic, strong) MediaImageItemView * itemView;// 自定义类用于画图,作为canvasSuperView的subview

}


画布


先定义一个总的背景视图canvasSuperView,其他的view都作为它的子视图

@property (assign) IBOutlet NSView * canvasSuperView;

canvas视图 自定义CanvasView类,实现画背景图方法即可

@property (nonatomic, strong) CanvasView * p_canvasView;

拖拽框视图 自定义CanvasShapeView类,实现画拖拽点方法即可

@property (nonatomic, strong) CanvasShapeView * p_shapeView;


 self.p_canvasView = [[CanvasView new] autorelease];

 self.p_canvasView.delegate = self;

 [self.canvasSuperView addSubview:self.p_canvasView positioned:NSWindowAbove relativeTo:nil];

 self.p_canvasView.frame = self.canvasSuperView.bounds;

    

 self.p_shapeView = [[CanvasShapeView new] autorelease];

 self.p_shapeView.delegate = self;

 [self.canvasSuperView addSubview:self.p_shapeView positioned:NSWindowAbove relativeTo:nil];

 self.p_shapeView.frame = self.canvasSuperView.bounds;



下面以加入一张图片到canvasview为例


首先根据图片路径创建一个图片数据对象

ImageData * testData = [ImageData createImageDataWithPath:path];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值