xamarin.formsでスクリーンキャプチャを行うパッケージはありますか?私はGoogleマップのスクリーンショットにxamarin.formsでスクリーンキャプチャを作成する
2
A
答えて
7
をキャプチャするためにも必要
はダニエルHindrikesによってthisのブログ記事をご覧ください。
共有コードにPCLを使用すると仮定します。
PCLにインターフェイスを作成する必要があります。彼はそれをIScreenshotManager
と呼びます。宣言は次のようになります。
public interface IScreenshotManager
{
Task<byte[]> CaptureAsync();
}
これで、すべてのプラットフォームで独自の実装が行われます。 iOSの場合。 Android用
public class ScreenshotManager : IScreenshotManager
{
public async System.Threading.Tasks.Task<byte[]> CaptureAsync()
{
var view = UIApplication.SharedApplication.KeyWindow.RootViewController.View;
UIGraphics.BeginImageContext(view.Frame.Size);
view.DrawViewHierarchy(view.Frame, true);
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
using(var imageData = image.AsPNG())
{
var bytes = new byte[imageData.Length];
System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, bytes, 0, Convert.ToInt32(imageData.Length));
return bytes;
}
}
}
:
public class ScreenshotManager : IScreenshotManager
{
public async Task<byte[]> CaptureAsync()
{
var rootFrame = Application.Current.RootVisual as PhoneApplicationFrame;
var screenImage = new WriteableBitmap((int)rootFrame.ActualWidth, (int)rootFrame.ActualHeight);
screenImage.Render(rootFrame, new MatrixTransform());
screenImage.Invalidate();
using (var stream = new MemoryStream())
{
screenImage.SaveJpeg(stream, screenImage.PixelWidth, screenImage.PixelHeight, 0, 100);
var bytes = stream.ToArray();
return bytes;
}
}
}
Dependency Serviceでそれを登録した属性を使用して、プラットフォーム固有の実装を登録することを忘れないでください、のような:
public class ScreenshotManager : IScreenshotManager
{
public static Activity Activity { get; set; }
public async System.Threading.Tasks.Task<byte[]> CaptureAsync()
{
if(Activity == null)
{
throw new Exception("You have to set ScreenshotManager.Activity in your Android project");
}
var view = Activity.Window.DecorView;
view.DrawingCacheEnabled = true;
Bitmap bitmap = view.GetDrawingCache(true);
byte[] bitmapData;
using (var stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
bitmapData = stream.ToArray();
}
return bitmapData;
}
}
とWindows Phone用
これは:[assembly: Xamarin.Forms.Dependency (typeof (ScreenshotManager))]
名前空間宣言の上になります。
var screenshotBytes = DependencyService.Get<IScreenshotManager>().CaptureAsync();
おそらくDependencyService.Get<IScreenshotManager>()
がそれを使用する前にnull
ないかどうかを確認したい:
は、今すぐあなたの共有コードからあなたはこのような呼び出しでのスクリーンショットのbyte[]
を取得することができるだろう。
その後、byte[]
をイメージに変換して、好きなように操作できます。
関連する問題
- 1. Javaで64ビットウィンドウのスクリーンキャプチャからビデオを作成する
- 2. Xamarin.Formsでグラフを作成するには?
- 3. Xamarin.formsでカスタムデータグリッドを作成する方法
- 4. Xamarin.Forms:グラフの作成
- 5. xamarin.forms android projectにログエラーを作成する
- 6. Xamarin.Forms - メインレイアウトテンプレートを作成する方法?
- 7. Xamarin.Forms:検索バーの作成
- 8. Java:Robotスクリーンキャプチャのランダムファイル名を生成
- 9. (クライアント)スクリーンキャプチャ?
- 10. Xamarin.FormsでMVVMを使用してUserControlを作成する方法
- 11. Xamarin.Formsで自動起動アプリケーションを作成する
- 12. .NET Standard(VS2017)でXamarin.Formsのプロジェクトを作成する方法
- 13. Xamarin.Formsで3つのピッカーの動的セットを作成する
- 14. Xamarin.Formsでバインディングプロパティを作成する方法は?
- 15. Xamarin.Formsのカスタムコントロールをゼロから作成
- 16. スクリーンキャプチャに関する問題
- 17. CのGLUTスクリーンキャプチャ
- 18. シンプルなXamarin.Formsアイテムビューの作成方法
- 19. Xamarin.Forms型関連のデータ型を作成できますか?
- 20. Azure IOTライブラリでXamarin.Forms .Net標準アプリケーションを作成しますか?
- 21. xamarin.formsアプリのプロファイルを作成するには?
- 22. Xamarin.Forms Windows phone 8.1プロジェクトを作成するには?
- 23. ラウンドコーナーのエントリコントロールを作成する方法Xamarin.Forms
- 24. Xamarin.Formsアプリケーションを作成できませんでした
- 25. AndroidでXamarin.Forms TabbedPageを作成する方法は、iOSと同じです。
- 26. アプリケーションのスクリーンキャプチャとレンダリング
- 27. Java VNCアプレットとスクリーンキャプチャ
- 28. iPhoneスクリーンキャプチャの質問
- 29. Xamarin.Forms:イメージカルーセルを作成する最良の方法は何ですか?
- 30. OxyPlotを使用したXamarin.Formsポータブルアプリケーションでチャートを作成する方法は?
カメラビューをバックグラウンドとして使用しているときに画面をキャプチャしようとすると、画像にライブカメラビューが表示されません。 – DrPatience
@DrPatienceライブカメラビューの解決策は見つかりましたか?私はその解決策を試みているが、何も見つけることができない。カメラの画面は常に黒く表示されます – user1796141
すべてのプラットフォームで使用できますか? –