xamarin.mac怎样绘制矩形

我正在尝试在xamarin.mac框架中绘制一个矩形。 看起来这可以通过CoreGrpahics命名空间来完成,但我不确定它是如何与xamarin挂钩的。 例如

NSColor.Black.Set();
NSBezierPath.StrokeLine(new CGPoint(-10.0f, 0.0f), new CGPoint(10.0f, 0.0f));

屏幕上没有显示任何内容,我相信它应该会显示一行。 这在其他Xamari 框架中很容易实现,因为有内置函数可用,但xamarin.mac文档非常稀疏。

 
c#
xamarin
xamarin.mac
1s

推荐解答

这段代码绘制了一个三角形,但应该给你基本的想法。 对于iOS和Mac,CoreGraphics API应该是相同的,因此一个示例应该很容易转换为另一个:

using CoreGraphics;

public class CustomDrawnView : NSView
{
        private const bool useBezeirPath = true;

        // Called when created from unmanaged code
        public CustomDrawnView(IntPtr handle) : base(handle)
        {
            Initialize();
        }

        // Called when created directly from a XIB file
        [Export("initWithCoder:")]
        public CustomDrawnView(NSCoder coder) : base(coder)
        {
            Initialize();
        }

        public CustomDrawnView(CGRect rect): base(rect)
        {

        }

        // Shared initialization code
        void Initialize()
        {

        }
        
        public override void DrawRect(CGRect dirtyRect)
        {
            if(useBezeirPath)
            {
                NSColor.Red.Set();
                NSBezierPath.StrokeLine(new CGPoint(10,10), new CGPoint(100,100));
            }
            else
            {
                var context = NSGraphicsContext.CurrentContext.CGContext;
                context.SetStrokeColor(NSColor.Black.CGColor);
                context.SetLineWidth(1);
                
                var rectangleCGPath = CGPath.FromRoundedRect(new CGRect(10,10,100,100), 4, 4);
                
                context.AddPath(rectangleCGPath);
                context.StrokePath();
            }
        }
}
var mainView = new CustomDrawnView(MainWindow.ContentView.Frame);

MainWindow.ContentView = mainView;


  nopapp推荐