在 OSX 上有一个自定义透明窗口,其中有一个管理OpenGL绘图的NSView:
public class MyCustomOpenGLView : NSView
{
NSOpenGLContext openGLContext;
// ...
}
我设置了以下内容(使用Xamarin):
openGLContext.SurfaceOpaque = false;
相当于:
GLint opaque = 0;
[[[wnd contentView] openGLContext] setValues:&opaque forParameter:NSOpenGLCPSurfaceOpacity];
我还在管理OpenGL的NSView上设置了“Opaque”属性为false:
public override bool IsOpaque
{
get
{
return false;
}
}
相当于:
@implementation NSOpenGLView (Opaque)
-(BOOL)isOpaque {
return NO;
}
@end
然后在渲染过程中,我将透明色设置为透明:
GL.ClearColor(Color.Transparent);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
// Draw shape here...
视图呈现具有透明背景的形状,但我仍然可以单击透明区域。我希望能够点击透明区域。
我尝试重写HitTest方法,NSView确实在透明区域上点击鼠标。我在这做错了什么?任何帮助将不胜感激!