sách gpt4 ai đã đi

cocoa - 打印 NSImage

In lại 作者:行者123 更新时间:2023-12-03 17:18:05 37 4
mua khóa gpt4 Nike

由于 Cocoa-Java 已弃用,我正在将 Cocoa-Java 代码迁移到 Cocoa + JNI。该代码打印存储在文件中的图像。新的 Cocoa 代码基本上是:

NSImage *image = [[NSImage alloc] initWithContentsOfFile:spoolFile];
if ( [image isValid] ) {
NSImageView *view = [[NSImageView alloc] init];
[view setImage:image];
[view setImageScaling:NSScaleProportionally];

NSPoint p;
NSSize s;

p.x = static_cast( boundsX );
p.y = static_cast( boundsY );
[view setBoundsOrigin:p];

s.width = static_cast( boundsWidth );
s.height = static_cast( boundsHeight );
[view setBoundsSize:s];

NSPrintInfo *info = [NSPrintInfo sharedPrintInfo];
[info setHorizontalPagination:NSClipPagination];
[info setVerticalPagination:NSClipPagination];
[info setHorizontallyCentered:NO];
[info setVerticallyCentered:NO];

p.x = static_cast( boundsX );
p.y = static_cast( [info paperSize].height - boundsHeight - boundsY );
[view translateOriginToPoint:p];

NSPrintOperation *printOp =
[NSPrintOperation printOperationWithView:view printInfo:info];
[printOp setShowsPrintPanel:NO];
[printOp runOperation];
}

运行此代码最终会崩溃:

Thread 0 Crashed:
0 com.apple.AppKit 0x9484ac75 -[NSConcretePrintOperation(NSInternal) _tryToSetCurrentPageNumber:] + 345
1 com.apple.AppKit 0x948d88cf -[NSView(NSPrintingInternal) _printForCurrentOperation] + 524
2 com.apple.AppKit 0x948d85c5 -[NSConcretePrintOperation _renderView] + 358
3 com.apple.AppKit 0x9491f0c0 -[NSConcretePrintOperation runOperation] + 362
为什么?如何简单地打印存储在文件中的图像?

1 Câu trả lời

NSImageView *view = [[NSImageView alloc] init];

这是无效的。您需要使用initWithFrame:来初始化 View 。您可能需要传递一个由 NSZeroPoint 和图像大小组成的框架。

Đối với setBoundsOrigin:setBoundsSize: 的使用:我不确定这些是否有效,假设您打算裁剪图像。您可以尝试它们(解决上述问题后),但我觉得从旧图像的所需部分创建新图像更安全。您可以通过创建所需大小的空图像,锁定焦点,在新图像的原点绘制旧图像的正确部分,解锁新图像的焦点,然后给出新图像而不是新图像来完成此操作。旧的到 ImageView 。

关于cocoa - 打印 NSImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434175/

37 4 0
Bài viết được đề xuất: cocoa +钥匙串(keychain)API
Bài viết được đề xuất: objective-c - 创建 'executable bundle' 的步骤是什么
Bài viết được đề xuất: cocoa - 从 libswscale 中获取 PIX_FMT_YUYV422
Bài viết được đề xuất: objective-c - 跟踪系统事件
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com