有人可以帮助我使用以下代码片段来捕获OSX上的部分或整个桌面吗?我想指定定义捕获的矩形的左上角坐标(x,y)和宽度(w)以及高度(h)。
适用于OSX上的C#MonoMac应用程序。
这就是我所做的:
int windowNumber = 2;
System.Drawing.RectangleF bounds = new RectangleF(0,146,320,157);
CGImage screenImage = MonoMac.CoreGraphics.CGImage.ScreenImage(windowNumber,bounds);
MonoMac.Foundation.NSData bitmapData = screenImage.DataProvider.CopyData();
看起来我在'bitmapData'中有位图数据,但我不确定如何将NSData实例'bitmapData'转换为实际的Bitmap;即:
位图screenCapture = ????
文档非常稀疏,我用Google搜索了没有运气的例子。所以我希望那里有一位MonoMac专家可以指出我正确的方向? - 一个例子很好:o)
提前谢谢!
答案 0 :(得分:2)
这将为您提供.NET字节[]中捕获的字节,您可以从中创建位图或图像或任何您想要的内容。可能不是你想要的,但应该把你放在正确的方向。
int windowNumber = 2; System.Drawing.RectangleF bounds = new RectangleF(0,146,320,157);
CGImage screenImage = MonoMac.CoreGraphics.CGImage.ScreenImage(windowNumber,bounds);
using(NSBitmapImageRep imageRep = new NSBitmapImageRep(screenImage))
{
NSDictionary properties = NSDictionary.FromObjectAndKey(new NSNumber(1.0), new NSString("NSImageCompressionFactor"));
using(NSData tiffData = imageRep.RepresentationUsingTypeProperties(NSBitmapImageFileType.Png, properties))
{
byte[] imageBytes;
using(var ms = new MemoryStream())
{
tiffData.AsStream().CopyTo(ms);
imageBytes = ms.ToArray();
}
}
}