热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

如何让我的Cocoa应用程序精确绘制我的设计师在Sketch中指定的颜色?

如何解决《如何让我的Cocoa应用程序精确绘制我的设计师在Sketch中指定的颜色?》经验,请帮忙看看怎么搞?

我的设计师指定了要绘制的颜色.当我尝试在Cocoa应用程序中绘制该颜色时,我得到的结果颜色与Sketch.app显示的参考图像明显不同.

我制作了一个小型Cocoa应用程序,可以绘制自定义视图.这是代码中有趣的部分.请注意,我正在初始化SRGB空间中的颜色.

class View: NSView {
    override func drawRect(dirtyRect: NSRect) {
        let components : [CGFloat] = [156.0/255.0, 0, 254.0/255.0, 1]
        let color = NSColor.init(SRGBRed: components[0], green: components[1], blue: components[2], alpha: components[3])
        color.setFill()
        NSRectFill(self.bounds)
    }    
}

这是它绘制的内容.(没关系光标的部分.我删除了窗口阴影,这样就可以更容易地与其他窗口并排查看.)

在此输入图像描述

这是Sketch文件部分:

在此输入图像描述

将它们放在一起,这里是Sketch文件和自定义视图的并排,以及显示鼠标光标下的颜色值的Xscope放大镜.

将鼠标悬停在Sketch文件上时,我看到:

在此输入图像描述

将鼠标悬停在我的自定义视图上时,我会看到:

在此输入图像描述

您可以看到Xscope读取的黑色鼠标光标下的像素颜色值明显不同.我的Retina Macbook Pro显示器的颜色也有很大不同,但有趣的是,在捕获的屏幕截图PNG中没有那么不同.

但是:到目前为止,这一切都是通过默认显示设置和颜色配置文件"Color LCD"完成的(硬件是Retina Macbook Pro及其内置显示屏).当我在OSX设置应用程序中手动将显示配置文件更改为"sRGB IEC61966-2.1",然后使用Xscope再次采样颜色时,您可以看到这些采样值:

在此输入图像描述

在对自定义视图进行采样时:

在此输入图像描述

最有趣的是,您可以看到Xscope在我的自定义视图上采样的值与指定的值完全匹配,并且颜色在视觉上也是正确的.但是,当然,我不能让我的用户更改他们的显示配置文件.

我的问题:如何使我的自定义视图颜色与Sketch中的颜色(用于目视检查和使用Xscope放大镜采样时)与默认的彩色LCD显示配置文件完全匹配?


推荐阅读
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 面临考试压力,急需解决四个编程问题,包括实现乒乓球的动态效果、计算特定日期是一年的第几天、逆序输出数字以及创建弹出菜单。每个问题的解决都能在TC3.0环境中获得50分。 ... [详细]
  • 使用DetailsView控件实现数据分页显示
    本文介绍了如何利用DetailsView控件结合数据源,在ASP.NET页面中实现数据的分页显示功能。 ... [详细]
  • 作为一名在大型手机游戏公司工作的程序员,尽管主要负责游戏逻辑和内容的开发,但对iOS底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
  • 本文探讨了在Android应用程序开发过程中动态管理Fragment的方法,包括动态添加和切换Fragment,以及如何实现平滑的过渡动画。文章通过一个具体的案例——订单管理系统,详细介绍了实现步骤和技术细节。 ... [详细]
  • iOS 面试实战:15 道经典面试题及解析
    本文精选了15道iOS面试题,并提供了详细的解答思路。旨在帮助开发者更好地准备面试,避免因准备不足而导致的紧张和焦虑。 ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • 基于Flutter实现风车加载组件的制作_Android
    Flutter官方提供了诸如 CircularProgressIndicator和 LinearProgressIndicator两种常见的加载指示组件,但是说实话,实在太普通,所 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
author-avatar
情若自已_650
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有