Recommended
PPTX
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
PDF
[AWSマイスターシリーズ] Amazon DynamoDB
PPTX
C++のtemplate特殊化的なことをC#でやった話
PDF
PDF
リクルートが実践で学んできた“セルフBI”推進に求められる3つの要素
PDF
PDF
SharePoint Online 開発の最初の一歩
PPTX
Field collapsing/Result groupingについて
PPTX
PPTX
世界一わかりやすいClean Architecture - DroidKaigiバージョン
PDF
DBパフォーマンスチューニングの基礎:インデックス入門
PDF
Topic Modeling for Learning Analytics Researchers LAK15 Tutorial
PDF
Core Banking System on Apache Kafka
PPTX
Power Appsを使って映画の予約や履歴の管理をしてみた
PPTX
Introduction: Relational to Graphs
PDF
PPT
Ab initio beginner's course topic 1
PDF
PDF
Overview of Information Systems in Healthcare: Part 2
PDF
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
PDF
PDF
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
PDF
Visual Studio + xamarin で始めるモバイル アプリ開発
PDF
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
PDF
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
PDF
XamarinStudio勉強会 2014/09/08
PDF
PDF
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
PPTX
PPTX
Xamarin 101 ~環境構築からビルド・テストまで~
More Related Content
PPTX
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
PDF
[AWSマイスターシリーズ] Amazon DynamoDB
PPTX
C++のtemplate特殊化的なことをC#でやった話
PDF
PDF
リクルートが実践で学んできた“セルフBI”推進に求められる3つの要素
PDF
PDF
SharePoint Online 開発の最初の一歩
PPTX
Field collapsing/Result groupingについて
What's hot
PPTX
PPTX
世界一わかりやすいClean Architecture - DroidKaigiバージョン
PDF
DBパフォーマンスチューニングの基礎:インデックス入門
PDF
Topic Modeling for Learning Analytics Researchers LAK15 Tutorial
PDF
Core Banking System on Apache Kafka
PPTX
Power Appsを使って映画の予約や履歴の管理をしてみた
PPTX
Introduction: Relational to Graphs
PDF
PPT
Ab initio beginner's course topic 1
PDF
PDF
Overview of Information Systems in Healthcare: Part 2
Similar to Avalonia for MacApps
PDF
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
PDF
PDF
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
PDF
Visual Studio + xamarin で始めるモバイル アプリ開発
PDF
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
PDF
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
PDF
XamarinStudio勉強会 2014/09/08
PDF
PDF
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
PPTX
PPTX
Xamarin 101 ~環境構築からビルド・テストまで~
PPTX
Cross-Platform ができる Xamarin について
PPTX
PPTX
PPTX
Xamarin で始めるクロスプラットフォーム開発
KEY
PPTX
Xamarin Dev days 2 xamarin.forms ja
PPTX
PDF
モバイル向けクロスプラットフォーム開発ツール Xamarin の概要とその利点
PPTX
主にストアアプリが作りたい!! しかもI osとかandroidアプリとかも作りたい!!(公開用)
More from c-mitsuba
PDF
PDF
nameless ある沼にDeepDiveした人のポートフォリオ
PDF
Introduction Xamarin forms mac
PDF
Tried to touch Xamarin Forms for MacOS
PDF
Designer’s Design Talk - Azure / Windows Development 2人のMVPの場合 -
PDF
Introducing Fluent Design
PDF
Designer’s Design Talk Azure / Windows Development 2人のMVPの場合 -
PDF
Dotnetlab: Introducing Fluent Design System and Mixed Reality
PDF
Build 2021 Topics & Unofficial Talks for Windows Development
PDF
Beginning of HoloMagicians
PDF
PDF
PDF
Introducing micro:bit and demo
PDF
楽しく生きるために 何を選択して、どうしてきたか。
PDF
PDF
PPTX
PPTX
PDF
PDF
Avalonia for MacApps 1. 2. • H.N. :蜜葉 優 [@mitsuba yu]
• silkyfeel Organizer
• Microsoft MVP for Windows Development
• Designer / Developer / Photographer
• Keynoteの表紙はいつも自分で撮影
• 最近はHasselbladのカメラを使うのが楽しい。
• http://c-mitsuba.hatenablog.com
Profile
3. • What is Avalonia
• Cross-Platform / XAML based Cross-Platform
• Avalonia
• Cross-Platform への 個人的スタンス
• Avalonia をとりあえず実行してみる
• 1本アプリをつくってみた
• tanzanite for Mac build in Avalonia
• まとめ
Agenda
4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 14
• C#/XAML for HTML5な技術。
• HTMLの代わりに、XAMLで。JSの代わりにC#で記述できる、
Web開発用のプラットフォーム
• Migrate existing Silverlight, WPF, UWP, and Xamarin apps to
the Web なんて謳ってる。
• 昔ちょっと触ってみた記憶では、なかなか良く出来てて面白い
(技術的に。)
• Webのみで、Cross-Platformか?と言われると違うかも?
CSHTML5
15. 15
• 今イケイケのXAML based Cross-Platform。
• UWPをベースに設計され、Windows, WebAssembly, iOS, Mac,
Android, Linuxで動作する。
• サンプルコードも多いし、WinUIを取り込んだりイケイケ。
• 2018年5月にファーストリリースされている。
Uno Platform
16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 25
• dotnet CLI
dotnet new -i Avalonia.Templates
• VS Code
• VS for Mac
• JetBrains Rider
• Visual Studio
• https://marketplace.visualstudio.com/items?
itemName=AvaloniaTeam.AvaloniaforVisualStudio
Develop
26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 37
tanzanite for Mac - font selector tool -
• インストールされているフォント一覧を取得する。
• 任意の文字列を、全てのフォントで表示する。
• 文字色、背景色、フォントサイズを任意に設定する。
• 一覧からお気に入りフォントをピックアップしていく。
• お気に入りフォントのフォント名をコピーする。
• お気に入りを解除する。
38. 38
tanzanite for Mac - font selector tool -
• インストールされているフォント一覧を取得する。
• System.Drawing.Text.InstalledFontCollection
• Macだと、corecompat.system.drawingが使える。
が、全てのフォントが取れるわけではない(謎
https://github.com/CoreCompat/CoreCompat
•
39. 39
SkiaSharp
• Skia Graphics Library
• Googleが買収したOSSな2D Graphicsなライブラリ
• https://skia.org/
• SkiaSharp
• C#向けにラップしたライブラリ
• mono系プラットフォームでよく見かける。
• Avaloniaにも組み込まれている。
40. 40
Binding Font Collection
• インストールされているフォント一覧を取得する。
• SkiaSharp.SKFontManager.Default.FontFamilies
• 今回はこれを採用。
• 実行環境にインストールされている全てのフォントと
フォントウェイトを取得できる。
41. 42. 43. 43
Binding FontCollection
<ItemsControl Items="{Binding FontCollection}”
HorizontalAlignment="Stretch" VerticalAlignment=“Stretch">
<ItemsControl.Styles>
<Style Selector="WrapPanel">
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Stretch" />
<Setter Property=“Width"
Value="{Binding Bounds.Width,ElementName=ScrollViewer}" />
</Style>
</ItemsControl.Styles>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Background="{Binding BackgroundColor}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
• いつもどおり、IEnumerableをBinding
44. 45. 45
Binding Font Collection
• TextBlockにフォント名と、表示したい文字列をBinding
<Button Background="Transparent"
Command="{Binding DataContext.AddFavoriteListCommand,ElementName=Window}"
CommandParameter="{Binding}">
<Grid>
<StackPanel HorizontalAlignment="Stretch" Margin="12">
<TextBlock FontSize="16" Text="{Binding}"
Foreground="{Binding
DataContext.TargetFontColor.Value,ElementName=Window}"
Margin="0,0,0,2" />
<TextBlock FontSize="{Binding Value,ElementName=FontSize}"
Text="{Binding Text,ElementName=TargetText}"
Foreground="{Binding
DataContext.TargetFontColor.Value,ElementName=Window}"
FontFamily="{Binding
Converter={StaticResource StringToFontFamilyConverter}}" />
</StackPanel>
</Grid>
46. 47. 47
Fav Font Item
• 選択フォントをお気に入りリストに追加するCommand
<Button Background="Transparent"
Command="{Binding DataContext.AddFavoriteListCommand,ElementName=Window}"
CommandParameter="{Binding}">
<Grid>
<StackPanel HorizontalAlignment="Stretch" Margin="12">
<TextBlock FontSize="16" Text="{Binding}"
Foreground="{Binding
DataContext.TargetFontColor.Value,ElementName=Window}"
Margin="0,0,0,2" />
<TextBlock FontSize="{Binding Value,ElementName=FontSize}"
Text="{Binding Text,ElementName=TargetText}"
Foreground="{Binding
DataContext.TargetFontColor.Value,ElementName=Window}"
FontFamily="{Binding
Converter={StaticResource StringToFontFamilyConverter}}" />
</StackPanel>
</Grid>
48. 49. 49
Fav Font Item (C#:VM)
AddFavoriteListCommand = new ReactiveCommand();
DeleteFavoriteListCommand = new ReactiveCommand();
CopyFontNameCommand = new ReactiveCommand();
var enumerable = SKFontManager.Default.FontFamilies.OrderBy(o => o);
FontCollection = new ObservableCollection<string>(enumerable);
FavoriteFontCollection = new ObservableCollection<string>();
AddFavoriteListCommand.Subscribe(o =>
{
var value = o.ToString();
if ((value != null) & FavoriteFontCollection.Contains(value)) return;
FavoriteFontCollection.Add(value);
});
DeleteFavoriteListCommand.Subscribe(o =>
{
var value = o.ToString();
if ((value != null) & FavoriteFontCollection.Contains(value)) FavoriteFontCollection.Remove(value);
});
CopyFontNameCommand.Subscribe(async o =>
{
var value = o.ToString();
if (value != null) await Application.Current.Clipboard.SetTextAsync(value);
});
50. 51. 51
• Style.Triggerがない。 -> Interactivity使え。
• 時々プロパティ名が変わっている。
• TextBoxで日本語が打てない。
• IMEの変換が表示されない。
• MacのCommand + Qで終了ができない。
• Macのメニューバーを作りたい。
• .App Packing
Point
52. 53. 54. 55. 55
• MacのCommand + Qで終了ができない。
• Macのメニューバーを作りたい。
• MacAppのショートカットはメニューバーで定義される。
• メニューバーを実装して、
初めてCommand + Qが使える。
Mac MenuBar
56. 57. 58. 59. 60. 61. 62.