我正在尝试在xamarin.mac框架中绘制一个矩形。 看起来这可以通过CoreGrpahics命名空间来完成,但我不确定它是如何与xamarin挂钩的。 例如
NSColor.Black.Set();
NSBezierPath.StrokeLine(new CGPoint(-10.0f, 0.0f), new CGPoint(10.0f, 0.0f));
屏幕上没有显示任何内容,我相信它应该会显示一行。 这在其他Xamari 框架中很容易实现,因为有内置函数可用,但xamarin.mac文档非常稀疏。
这段代码绘制了一个三角形,但应该给你基本的想法。 对于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;