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. Xamarin.formsでカスタムデータグリッドを作成する方法
- 2. Xamarin.Formsでグラフを作成するには?
- 3. Javaで64ビットウィンドウのスクリーンキャプチャからビデオを作成する
- 4. Xamarin.Forms:グラフの作成
- 5. Xamarin.Forms - メインレイアウトテンプレートを作成する方法?
- 6. xamarin.forms android projectにログエラーを作成する
- 7. Xamarin.Forms:検索バーの作成
- 8. Java:Robotスクリーンキャプチャのランダムファイル名を生成
- 9. Xamarin.Formsでバインディングプロパティを作成する方法は?
- 10. Xamarin.Formsで自動起動アプリケーションを作成する
- 11. Xamarin.Formsのカスタムコントロールをゼロから作成
- 12. (クライアント)スクリーンキャプチャ?
- 13. シンプルなXamarin.Formsアイテムビューの作成方法
- 14. スクリーンキャプチャに関する問題
- 15. ラウンドコーナーのエントリコントロールを作成する方法Xamarin.Forms
- 16. xamarin.formsアプリのプロファイルを作成するには?
- 17. Xamarin.Formsアプリケーションを作成できませんでした
- 18. CのGLUTスクリーンキャプチャ
- 19. AndroidでXamarin.Forms TabbedPageを作成する方法は、iOSと同じです。
- 20. 複数のエラーXamarin.Formsの作成 - 空白XAMLアプリケーション(Xamarin.Formsポータブル)やAndroidアプリの
- 21. Xamarin.Forms:イメージカルーセルを作成する最良の方法は何ですか?
- 22. OxyPlotを使用したXamarin.Formsポータブルアプリケーションでチャートを作成する方法は?
- 23. Java VNCアプレットとスクリーンキャプチャ
- 24. アプリケーションのスクリーンキャプチャとレンダリング
- 25. iPhoneスクリーンキャプチャの質問
- 26. Xamarin.Formsの一般的なヘッダーとフッターでカルーセルページを作成する方法
- 27. SqlserverとXamarin.formsを通信するためのWCFサービスを作成する方法
- 28. Xamarin.FormsとZxingでQRコードを生成
- 29. Motorola Xoomでスクリーンキャプチャを行うには?
- 30. PCLと共有コードを持つXamarin.Formsプロジェクトを作成できますか?
カメラビューをバックグラウンドとして使用しているときに画面をキャプチャしようとすると、画像にライブカメラビューが表示されません。 – DrPatience
@DrPatienceライブカメラビューの解決策は見つかりましたか?私はその解決策を試みているが、何も見つけることができない。カメラの画面は常に黒く表示されます – user1796141
すべてのプラットフォームで使用できますか? –