如何在 xamarin.mac 中绘制矩形
How to draw a rectangle in xamarin.mac
我正在尝试在 xamarin.mac 框架中绘制一个矩形。这似乎可以通过 CoreGrpahics 命名空间来完成,但我不确定它是如何与 xamarin 挂钩的。例如
NSColor.Black.Set();
NSBezierPath.StrokeLine(new CGPoint(-10.0f, 0.0f), new CGPoint(10.0f, 0.0f));
没有在屏幕上显示任何内容,而我认为它应该显示一行。这在另一个 Xamarin 中似乎微不足道。框架,因为有可用的内置函数,但 xamarin.mac 文档非常稀少。
这段代码来自 Xamarin docs 画了一个三角形,但应该给你基本的想法。 iOS 和 Mac 的 CoreGraphics API 应该是相同的,因此一个示例应该很容易转换为另一个
//get graphics context
using (CGContext g = UIGraphics.GetCurrentContext ()) {
//set up drawing attributes
g.SetLineWidth (10);
UIColor.Blue.SetFill ();
UIColor.Red.SetStroke ();
//create geometry
var path = new CGPath ();
path.AddLines (new CGPoint[]{
new CGPoint (100, 200),
new CGPoint (160, 100),
new CGPoint (220, 200)});
path.CloseSubpath ();
//add geometry to graphics context and draw it
g.AddPath (path);
g.DrawPath (CGPathDrawingMode.FillStroke);
}
欢迎光临!很高兴看到更多 Xamarin.Mac 用户。
@SushiHangover 暗示了它,但你需要处于有效的绘制上下文中。请原谅我是否过度解释,但像您正在讨论的自定义绘图通常是在 NSView 中完成的,通常是通过覆盖视图的 DrawRect(CGRect dirtyRect)
方法。该方法由 AppKit 在适当的图形上下文中固有地调用。因此,如果在视图的该方法中调用,您的代码将正常工作。请记住,这些绘图方法会被经常调用,并且必须高效。
如果您要使用 CGPath 而不是 NSBezierPath,则需要通过调用 NSGraphicsContext.CurrentContext.CGContext.addPath(path)
将该路径添加到上下文中。
我在这里为您制作了一个名为 "MacOS Custom Drawing" 的小 Xamarin 工作簿,它显示了两种方式:https://github.com/NickSpag/Workbooks。我还推荐用于绘图练习和测试的工作簿,因为它们可以非常轻松地持续快速地重新加载您的代码。
我正在尝试在 xamarin.mac 框架中绘制一个矩形。这似乎可以通过 CoreGrpahics 命名空间来完成,但我不确定它是如何与 xamarin 挂钩的。例如
NSColor.Black.Set();
NSBezierPath.StrokeLine(new CGPoint(-10.0f, 0.0f), new CGPoint(10.0f, 0.0f));
没有在屏幕上显示任何内容,而我认为它应该显示一行。这在另一个 Xamarin 中似乎微不足道。框架,因为有可用的内置函数,但 xamarin.mac 文档非常稀少。
这段代码来自 Xamarin docs 画了一个三角形,但应该给你基本的想法。 iOS 和 Mac 的 CoreGraphics API 应该是相同的,因此一个示例应该很容易转换为另一个
//get graphics context
using (CGContext g = UIGraphics.GetCurrentContext ()) {
//set up drawing attributes
g.SetLineWidth (10);
UIColor.Blue.SetFill ();
UIColor.Red.SetStroke ();
//create geometry
var path = new CGPath ();
path.AddLines (new CGPoint[]{
new CGPoint (100, 200),
new CGPoint (160, 100),
new CGPoint (220, 200)});
path.CloseSubpath ();
//add geometry to graphics context and draw it
g.AddPath (path);
g.DrawPath (CGPathDrawingMode.FillStroke);
}
欢迎光临!很高兴看到更多 Xamarin.Mac 用户。
@SushiHangover 暗示了它,但你需要处于有效的绘制上下文中。请原谅我是否过度解释,但像您正在讨论的自定义绘图通常是在 NSView 中完成的,通常是通过覆盖视图的 DrawRect(CGRect dirtyRect)
方法。该方法由 AppKit 在适当的图形上下文中固有地调用。因此,如果在视图的该方法中调用,您的代码将正常工作。请记住,这些绘图方法会被经常调用,并且必须高效。
如果您要使用 CGPath 而不是 NSBezierPath,则需要通过调用 NSGraphicsContext.CurrentContext.CGContext.addPath(path)
将该路径添加到上下文中。
我在这里为您制作了一个名为 "MacOS Custom Drawing" 的小 Xamarin 工作簿,它显示了两种方式:https://github.com/NickSpag/Workbooks。我还推荐用于绘图练习和测试的工作簿,因为它们可以非常轻松地持续快速地重新加载您的代码。