gpt4 book ai didi

cocoa - 在彼此之上绘制线条

转载 作者:行者123 更新时间:2023-12-03 17:49:20 25 4
gpt4 key购买 nike

我在 OS X 中绘制相互重叠的线条时遇到问题。以下代码绘制一个红色矩形,然后绘制相同的绿色矩形。我希望结果是一个绿色矩形,因为它是最后绘制的。我得到了红色和绿色的混合物 - 橄榄绿。在这种情况下如何修改代码以获得绿色矩形?

import Cocoa

class TestView : NSView {

override func drawRect (dirtyRect : NSRect) {

super.drawRect (dirtyRect)

let rect = NSRect (x : 100 , y : 200 , width : 100 , height : 100)

var p = NSBezierPath ()

var c = NSColor (red : 1 , green : 0 , blue : 0 , alpha : 1)

c.set ()

p.appendBezierPathWithRect (rect)

p.stroke ()

p = NSBezierPath ()

c = NSColor (red : 0 , green : 1 , blue : 0 , alpha : 1)

c.set ()

p.appendBezierPathWithRect (rect)

p.stroke ()
}
}

谢谢/米凯尔

最佳答案

如果您只想要一种颜色,为什么要描两次呢?无论如何,您可能需要显式设置图形上下文的混合模式。NSGraphicsContext 有一个 compositingOperation 属性

CoreGraphics 和 NS AppKit 包装器中的许多绘图命令也可以采用合成操作参数。

还要确保您的 View 的 alpha 值为 1.0,alpha 小于 1.0 的非不透明 View 可能会合成

最后还有用于获取积分矩形的基础函数。您可能想查看这些并尝试笔画宽度。如果您的绘图边缘落在子像素边界或子点边界上,则由于物理限制,可能会出现混合颜色的抗锯齿现象。

关于cocoa - 在彼此之上绘制线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com