dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

9VAeきゅうべえ Xamarinについて勉強。Cからの描画はどうしたら良い?

9VAeきゅうべえ Xamarin版の開発を始める。

9VAeきゅうべえはいろんなところに移植してきたが、だいたい以下の手順でやってきた。

新しい環境に移植するときのパターン

  1. 動作する開発環境をコピー(ダウンロード)する
  2. 動作するサンプルを入手する
  3. サンプルを改造し、必要な機能の実装方法を確認する
  4. 最初は悩むよりも知っている人に尋ねる方が早い
  5. 出来上がってきたら、入手した情報をまとめていく
  6. 自分が得た知識と知っておくべき知識を比較し、間違えている部分を修正していき、徐々に完成に近く

今まで、皆この手順だ。勉強せずに少しずつ作っていき、最後に勉強して間違えていた部分を後から修正するという感じだ。作りながら勉強するといった方が聞こえはいいかも。わからずに作り始めるので、時々、別のサンプルから作り直すことがある。iPad版の場合は3回作り直した。最後には、最初の作り方のどこが悪かったかわかるようになる。(けど、すぐ忘れる)

 

Xamarinのサンプルはたくさんある

Samples - Xamarin

 

ということで、ここからXamarin のサンプルプロジェクトを探す。とりあえず役に立ちそうなプロジェクトをダウンロードする。たくさんあるが、ペイントブラシのようなサンプルはないのかな。

タイマー描画?

AnalogClock - Xamarin

Sound effects example - Xamarin

Working With Audio – Test Application - Xamarin

API色々

Android API Demo - Xamarin

画像

Loading Large Images - Xamarin

 

マルチタスク

MultiTasking - Xamarin

マルチタッチ

Multi-Touch Tracking in Android - Xamarin

画面回転

Rotation Demo - Xamarin

スクリーンキャプチャ

ScreenCapture - Xamarin

ファイルを開く、保存

Scoped Directory Access Sample - Xamarin

Storage Client - Xamarin

Storage Provider - Xamarin

SVG

svg-android binding - Xamarin

同期

SynchronizedNotifications - Xamarin

タッチ

Touch in Android (Completed Sample) - Xamarin

Touch in Android (Walkthrough) - Xamarin

Touch-Tracking Effect Demos - Xamarin

フォント

Working with Fonts - Xamarin

 

こちらにもある

Draw 2D Graphics - Xamarin

SkiaSharpというライブラリがあるようだ。

2D Drawing - Xamarin

 

サンプルプロジェクトを見て勉強

Touch-Tracking Effect Demos - Xamarin

の中に、指で絵をかくアプリを発見。SKPaintを使っている。SKPaintは C#のようなので、もっと低レベルの描画関数を探さないとあかんような気がする。

 

AnalogClock - Xamarin

アナログ時計の描画が Canvasを使っており、こちらは、Mono.Androidという関数を使っていて、これが使えそう。 

タイマーは、async / await という仕組みを使っているようだ。自分でタイマーループを作っているみたいだが、まず、これを真似してみるか。 

Xamarin の Alpha版で async/await を試す - Qiita

 

描画をどうするか検討

9VAeきゅうべえの場合、Cのライブラリ関数の中で画面に描画する。

まず、C#から、Cの関数をどう呼び出すか、これは簡単にできるみたい。

.NET TIPS:Win32 APIやDLL関数を呼び出すには? - @IT

 

C# + Native C による高速化〜その1:基礎知識と準備

これをみると、C++のプロジェクトを作って一旦 DLLを作って呼ぶようだ。

 

さて、描画は、Monoを使いたいので、C++から Mono.Androidの描画関数が呼べるかどうか。パッと探した感じだと見つからない。iosアプリを作る場合は、Objective-Cのコードが呼べて、その中で描画までできるようだが、Androidの場合は描画用の関数が Xamarinにしかない。となると、9VAeLibと同時に、Xamarinを動かしておいて、描画の指示があったときに横から描画するといった技を使うのだろうか。アラートを表示するときは、他でもそうやっているのだが、描画までそうするのかな。まあ、やってみるか。描画ができるまで少し時間がかかりそう。

 

これも関係ありそう。ライブラリについて

Using Native Libraries - Xamarin