C# xamarin ios屏幕截图和电子邮件

C# xamarin ios屏幕截图和电子邮件,c#,xamarin.ios,xamarin,C#,Xamarin.ios,Xamarin,如何使用按钮截图并发送到电子邮件? 我已经做了截图编码,但它会保存到相册 partial void btnScreenshot (NSObject sender) { UIImage image; UIGraphics.BeginImageContext (View.Frame.Size); //new iOS 7 method to snapshot View.DrawViewHierarchy (View.Fra

如何使用按钮截图并发送到电子邮件? 我已经做了截图编码,但它会保存到相册

    partial void btnScreenshot (NSObject sender)
    {
        UIImage image;
        UIGraphics.BeginImageContext (View.Frame.Size);
        //new iOS 7 method to snapshot
        View.DrawViewHierarchy (View.Frame, true);
        image = UIGraphics.GetImageFromCurrentImageContext ();
        UIGraphics.EndImageContext ();
        //...code to save to photo album omitted for brevity
        image.SaveToPhotosAlbum((img, err) => {
            if(err != null)
                Console.WriteLine("error saving image: {0}", err);
            else
                Console.WriteLine ("image saved to photo album");
            UIAlertView alert = new UIAlertView("Screenshot", "Image saved successfully", alertDelegate, "OK", null);
            alert.Show();
                alert.Show();
        });
    }
您可以使用此选项了解撰写电子邮件的说明

然后,要添加屏幕截图,需要使用
AddAttachmentData
方法

//截图
UIGraphics.BeginImageContext(View.Frame.Size);
View.DrawViewHierarchy(View.Frame,true);
UIImage=UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
//不要将其保存到相册(除非需要)
//创建电子邮件
var_mailController=新的MFMailComposeViewController();
_mailController.SetToRecipients(新[]{”john@doe.com"});
_mailController.SetSubject(“发送屏幕截图”);
_SetMessageBody(“这是应用程序的屏幕截图!”,false);
//将屏幕截图添加为附件
_mailController.AddAttachmentData(image.AsPNG(),“image/png”,“Screenshot.png”);
//处理用户完成发送电子邮件时要采取的操作
_mailController.Finished+=(对象s,MFCompositeSultEventArgs参数)=>{
System.Console.WriteLine(args.Result.ToString());
args.Controller.DismissViewController(true,null);
};
//显示电子邮件视图
PresentViewController(_mailController,true,null);
您可以使用此选项了解撰写电子邮件的说明

然后,要添加屏幕截图,需要使用
AddAttachmentData
方法

//截图
UIGraphics.BeginImageContext(View.Frame.Size);
View.DrawViewHierarchy(View.Frame,true);
UIImage=UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
//不要将其保存到相册(除非需要)
//创建电子邮件
var_mailController=新的MFMailComposeViewController();
_mailController.SetToRecipients(新[]{”john@doe.com"});
_mailController.SetSubject(“发送屏幕截图”);
_SetMessageBody(“这是应用程序的屏幕截图!”,false);
//将屏幕截图添加为附件
_mailController.AddAttachmentData(image.AsPNG(),“image/png”,“Screenshot.png”);
//处理用户完成发送电子邮件时要采取的操作
_mailController.Finished+=(对象s,MFCompositeSultEventArgs参数)=>{
System.Console.WriteLine(args.Result.ToString());
args.Controller.DismissViewController(true,null);
};
//显示电子邮件视图
PresentViewController(_mailController,true,null);

您尝试了哪些方法将其作为电子邮件发送?如果您能就我的回答提供反馈,并希望能够接受,我们将不胜感激。谢谢史考特,谢谢你的建议。对不起,我最近一直忙着其他功能。我刚刚试过你的代码,是的,它确实有效!非常感谢!但它真的在emulator上发送邮件吗?我怎么接受呢@Scott@zhihao没问题。那很好,它能工作。模拟器不会发送电子邮件,它只会假装发送。您必须部署到设备才能看到它完全工作。要接受答案,请单击我答案分数下方的勾选框。有关如何接受的说明。Thanks@Scott哦,找到了。滴答!好的,谢谢。开发人员帐户需要将其部署到设备上,对吗?为了将其作为电子邮件发送,您做了哪些尝试?如果您能提供有关我答案的反馈,并希望能够接受,我们将不胜感激。谢谢史考特,谢谢你的建议。对不起,我最近一直忙着其他功能。我刚刚试过你的代码,是的,它确实有效!非常感谢!但它真的在emulator上发送邮件吗?我怎么接受呢@Scott@zhihao没问题。那很好,它能工作。模拟器不会发送电子邮件,它只会假装发送。您必须部署到设备才能看到它完全工作。要接受答案,请单击我答案分数下方的勾选框。有关如何接受的说明。Thanks@Scott哦,找到了。滴答!好的,谢谢。将其部署到设备上需要开发人员帐户,对吗?嗨@Scott,我希望你能帮助我。我使用的代码与上面相同。一切都很好,只是我正在尝试拍摄一张比视图框架更宽的图表快照(用户可以滚动)。我的快照被截断了,我似乎不知道如何在快照中包含图表的整个部分。有什么想法吗?@DuncanMcIntyre假设您的图表位于UIScrollView中,在这种情况下,您应该将上下文大小设置为
ContentSize
,即
UIGraphics.BeginImageContext(YourChartScrollView.ContentSize),应该可以。我实际上正在使用此图表组件,似乎无法确定它是否使用uiscrollview。我尝试使用图表的框架大小,但仍然得到相同的截断结果。我甚至试过UIGraphics.BeginImageContext(新的SizeF(800f,800f));但还是不走运。嗨,斯科特,我希望你能帮我,伙计。我使用的代码与上面相同。一切都很好,只是我正在尝试拍摄一张比视图框架更宽的图表快照(用户可以滚动)。我的快照被截断了,我似乎不知道如何在快照中包含图表的整个部分。有什么想法吗?@DuncanMcIntyre假设您的图表位于UIScrollView中,在这种情况下,您应该将上下文大小设置为
ContentSize
,即
UIGraphics.BeginImageContext(YourChartScrollView.ContentSize),应该可以。我实际上正在使用此图表组件,似乎无法确定它是否使用uiscrollview。我尝试使用图表的框架大小,但仍然得到相同的截断结果。我甚至试过UIGraphics.BeginImageContext(新的SizeF(800f,800f));但还是没有运气。