Michi -GPSログ整形アプリを.NETへ移行する。 5

scottPlotやNPlotでフォントが化けるのは、結局System.Drawing.Commonが.NET6 unixではサポートされていないから?らしいですね…ということはImageSharpでゴリゴリとグラフを描画するしかないのかなぁ。

という訳で、とりあえずImageSharpで文字が描画できるかだけを確かめた。

using (SixLabors.ImageSharp.Image img = new Image<Rgba32>(500, 100))
 {
  //var font = SixLabors.Fonts.SystemFonts.CreateFont("Arial", 39, SixLabors.Fonts.FontStyle.Regular);
  var font = SixLabors.Fonts.SystemFonts.CreateFont("Ubuntu Mono", 39, SixLabors.Fonts.FontStyle.Regular);

  string text = "Hello World ハローワールド";

  img.Mutate(ctx => ctx
    .Fill(SixLabors.ImageSharp.Color.Gray)
    .DrawText(text, font, SixLabors.ImageSharp.Color.Black, new SixLabors.ImageSharp.PointF(0, 0))
  );

  img.Save("/path/test.png");
}
こんな感じに出力できた。

日本語が出ないのはフォントの指定方法が悪いせいなのか調べてません。とりあえず英語が出れば問題ないので、ImageSharpで(非常に)簡単なグラフ ライブラリを作ってみます。

Michi -GPSログ整形アプリを.NETへ移行する。 4

細かい追加事項です。

  1. nPlotはnuGetでも追加できました。そしてScottPlotと同じように文字化けする。
  2. アプリをWindows11でビルドすると、scottPlotは文字化けしませんでした。なので、文字化けはlinux版のSystem.Drawing.Common(?)のバグらしい。
  3. https://github.com/ScottPlot/ScottPlot/issues/1079 にも情報があった。
  4. System.Drawing.Common (6.0.0) をnuGetしてみたらscottPlotもnPlotもエラーが出てグラフを構築できなかった。
  5. AppDomain.CurrentDomain.BaseDirectory はlinux版とwindows版で挙動が違う?linux版では「.TrimEnd(‘\\’)」が必要だった。

■追記 2022/ 5/31 Release版を作って実行したら、文字化けしませんでした。めでたし、めでたし。

シン・ウルトラマン (2022)

https://shin-ultraman.jp/

見てきました。先週から気にはなっていたのですが、金曜から何故か腰が痛くて今週末は自転車をおやすみ。その代わりというわけではないのですが、朝イチの上映を見てきました。

面白かったですよ。ウルトラマンをちゃんと見るのは幼稚園の頃見たウルトラマン・レオ以来だと思うので約半世紀ぶりといえばそうかも。

“シン・ウルトラマン (2022)” の続きを読む

Michi -GPSログ整形アプリを.NETへ移行する。 3

■ScottPlotを使ってみる。こちらの方がImageSharpより簡単そうなので試してみる。NuGetでVSCodeにインストールするとバージョンは4.1.45だった。適当にgoogleってサンプルをあたってみる。


上がnPlot、下がScottPlotです。

とりあえず概要はできましたが、フォントが文字化け…

■追記 2022/ 5/22
ちょっとだけ前進