質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

581閲覧

Xamarin.iOSでViewを画像化したいが白紙になる

yrema

総合スコア286

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2019/04/09 06:58

編集2019/04/10 01:14

以下のサンプルで、タッチし終わったら合成して1枚のUIImageにしたいです。
GraphicsDemo_Finished

TouchesEnded()の最後に以下のようなコードを追記しましたが、
UIGraphics.GetImageFromCurrentImageContext()がnullで返ってきてしまいます。
GetImageFromCurrentImageContextがnullになる件はUIGraphics.BeginImageContextしていないのが原因だと分かりました。
以下のようにしてpngファイル自体は出力できたのですが、何も描かれていない画像が出力されてしまいます。
なぜでしょうか?

c#

1 CGSize imageSize = new CGSize(200f, 200f); 2 UIGraphics.BeginImageContext(imageSize); 3 // 現在のグラフィックスコンテキストの画像を取得する 4 CGContext currentContext = UIGraphics.GetCurrentContext(); 5 UIImage snapshot = UIGraphics.GetImageFromCurrentImageContext();てしまう 6 // 現在のグラフィックスコンテキストへの編集を終了 7 UIGraphics.EndImageContext(); 8 //Stream pngStream = snapshot.AsPNG().AsStream(); 9 NSData data = snapshot.AsPNG(); 10 NSError err; 11 string dir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 12 string fileName = "temp" + DateTime.Now.ToString("_yyyyMMdd_HHmmss") + ".png"; 13 if (!data.Save(dir + "/" + fileName, true, out err)) 14 { 15 Console.WriteLine("Saving of file failed: " + err.Description); 16 }

◆環境
Visual Studio 2017
Xamarin 4.12
Xamarin.iOS 12.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

グラフィックコンテキストへ描画処理を行なっていないので、何も描かれていない画像が出力されるのは当然です。
スクリーンショットを描画するなら、以下のようにします。

c#

1CGContext currentContext = UIGraphics.GetCurrentContext(); 2 3Layer.RenderInContext(currentContext); //追加 4 5UIImage snapshot = UIGraphics.GetImageFromCurrentImageContext();

投稿2019/04/10 02:02

f-miyu

総合スコア1625

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yrema

2019/04/10 02:19

解決できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問