如何在Cocoa AppKit应用程序中实现缩放缩放

如何在Cocoa AppKit应用程序中实现缩放缩放,第1张

概述如何在 Cocoa AppKit应用程序中实现缩放/缩放(即不是最大化窗口而是缩放窗口及其所有子视图)?我认为它在iOS中称为zoomScale.可以使用Core Animations或Quartz 2D(例如CGContextScaleCTM)完成,还是我被迫在所有NSViews,NSCells等中手动实现它? 每个NSView都有一个边界和框架,框架是一个矩形,用于描述视图在其超视图边界内的位 如何在 Cocoa AppKit应用程序中实现缩放/缩放(即不是最大化窗口而是缩放窗口及其所有子视图)?我认为它在iOS中称为zoomScale.可以使用Core Animations或Quartz 2D(例如CGContextScaleCTM)完成,还是我被迫在所有NSVIEws,NSCells等中手动实现它?解决方法 每个NSVIEw都有一个边界和框架,框架是一个矩形,用于描述视图在其超视图边界内的位置.大多数视图都有一个零起点的边界,以及与其框架大小相匹配的大小,但不一定是这种情况.您可以更改视图边界和框架的关系以缩放并转换自定义绘图和子视图.更改视图的边界时,它还会以递归方式影响后代视图的绘制.

更改视图边界的最直接方法是 – [NSVIEw scaleUnitSquaretoSize:].在您的一个视图中,尝试调用[self scaleUnitSquaretoSize:NSMakeSize(2.0,2.0)],您应该看到其中的所有内容的大小看起来是双倍的.

这是一个例子.使用包含自定义视图和按钮的窗口创建XIB文件.将自定义视图的自定义类设置为MyVIEw.将按钮的 *** 作连接到视图的doubleSize: *** 作.构建并运行并按下按钮.每次按下时,自定义视图中的红色方块的大小应加倍.

/// MyVIEw.h@interface MyVIEw : NSVIEw {}- (IBAction)doubleSize:(ID)sender;@end/// MyVIEw.m@implementation MyVIEw- (IBAction)doubleSize:(ID)sender {    [self scaleUnitSquaretoSize:NSMakeSize(2.0,2.0)];    /// important,changing the scale doesn't invalIDate the display    [self setNeedsdisplay:YES];}- (voID)drawRect:(NSRect)dirtyRect {    NSSize squareSize = NSMakeSize(8,8);    NSRect square = NSMakeRect([self bounds].size.wIDth / 2 - squareSize.wIDth / 2,[self bounds].size.height / 2 - squareSize.height / 2,squareSize.wIDth,squareSize.height);    [[NScolor redcolor] set];    NSRectFill(square);}@end
总结

以上是内存溢出为你收集整理的如何在Cocoa AppKit应用程序中实现缩放/缩放全部内容,希望文章能够帮你解决如何在Cocoa AppKit应用程序中实现缩放/缩放所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存