shuhelohelo’s blog

Xamarin.Forms多めです.

C#

OpenCvSharpでHSVで特定の色を取り出すときの簡易確認ツール

OpenCVで特定の色だけにしぼり込むときに、HSV(Hue,Saturation,Value)で範囲を指定するとします。 ある画像をサンプルとして、自分が絞り込みたい色の範囲はHSVでどの値の範囲なのかを確認したいです。 そんなちょっとした確認に便利なツールがあると便利で…

OpenCvSharp4で特定の色だけを抜き出す

以下の記事をOpenCvSharpを使ってやった内容になります。 tecsingularity.com RGBで指定 RGBで色の範囲を指定して抜き出すには以下のようにします。 using OpenCvSharp; using System; namespace OpenCVColorExtraction { class Program { //抽出したい色の…

C#でOpenCVを使うOpenCVSharp

OpenCVのC#ラッパーとしてOpenCvSharpというNugetパッケージがあります。 github.com これを使うとC#でOpenCVによる画像処理や色々ができます。 例えば、画像を読み込んで表示させたり、画像の色空間を変更したりというのは以下のようなコードを書きます。 u…

正規表現でマッチした部分を同じ文字数の記号で置換する

C#

実装の一例としてメモ 例えば,連続する半角スペースに対して2文字目以降をnbspで置き換える場合は以下のようにする. public static string ConsecutiveBlanksToNBSP(string sentense) { Regex re = new Regex(@"(?<= )( )+"); MatchCollection matches = re.…

privateフィールドの値を取得したりprivateメソッドを実行したり

C#

フィールドの場合はBindingFlags.GetField, メソッドの場合はBindingFlags.InvokeMethodを指定している. GetField()メソッドやGetMethod()メソッドを使う場合は上記のフラグはそもそも必要ない. ClassHoge hoge = new ClassHoge(); Type hogeType = hoge.Get…

C#のDisposeパターン

クラスを作成するときに,クラス内で使用するリソースを適切に開放するために,IDisposableインターフェイスを実装します. IDisposableを実装するときに,以下のように「Disposeパターンを使って明示的にインターフェイスを実装します」という項目があるのでそれ…

C# 非管理リソースの開放 (一時ファイル作成後の後始末について)

C#

リソースの開放はIDisposableインターフェースを実装して,開放処理を記述します. これについては以下の記事がとてもわかり易いです. ufcpp.net さて,この記事では「非管理リソースの開放」について書きます. 例えば,Path.GetTempFileName()メソッドで一時ファ…

iTextSharpでPDFを回転,選択する

使用するライブラリ iTextSharp.LGPLv2.Core 公式ではありません. NuGetからインストールします. PDFファイルの読み込み まずはPDFファイルを読み込みます. PdfReader reader = PdfReader(filePath); PDF情報の取得 このPdfReaderオブジェクトからはいろいろ…

「The reference assemblies for .NETFramework,Version=v5.0 were not found. 」への対処

Visual Studioで現在プレビュー版の.NET5を使ってトップレベルステートメントを試したときに以下のようなエラーメッセージが表示されました. The reference assemblies for .NETFramework,Version=v5.0 were not found. Tools > OptionsでOptionsウィンドウ…

コマンドラインでSDKを指定して.NETアプリケーションを作成する.

dotnetコマンドでプロジェクトを作成すると,一番新しいSDKが使用される. 現時点だとpreview版の.NET5をインストールしてあるので,dotnet new console -o Hogeとすると自動的にdotnet5のプロジェクトになる. そこで-f|--framework <FRAMEWORK>オプションを使う. <FRAMWORK> には以</framwork></framework>…

System.Text.Jsonでコメント付きJSONをデシリアライズ

C#

System.Text.json issue with comments · Issue #30743 · dotnet/runtime · GitHub 例えば以下のようなコメント付きのJSONがあったとする. { //Comment "FirstName": "太郎", /* this is comment */ "LastName": "田中"//コメントだよ! } これのデシリアライ…

コンソールアプリでASP.NET CoreのDIの仕組み(ServiceProvider)を使う(2)

当然HttpClientもDIすることができる. 前回のMicrosoft.Extensions.DependencyInjectionに加えてMicrosoft.Extensions.Httpをインストールする. using ConsoleAspNetCoreDI.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Exte…

コンソールアプリでASP.NET CoreのDIの仕組み(ServiceProvider)を使う(1)

2020/07/11追記 かずきさんのこちらの記事がとてもわかりやすい. qiita.com AddScopedとAddTransientの違い AddSingletonはSingleton. AddTransientはGetServiceするたびにインスタンスが作られる. じゃあAddScopedはというと,スコープが異なると別のインス…

Xamarin.FormsでSystem.Text.JSONでJSONファイルからデシリアライズするときのメモ

https://codeburst.io/working-with-json-in-net-core-3-2fd1236126c1codeburst.io ここでは予めデシリアライズ先の型を用意して,Embedded resourceに指定したJSONファイルから読み込んだデータをデシリアライズする手順を示す. System.Text.Jsonをインスト…

C#である値以上またはある値以下に変数の値を維持する

ある変数があって,それは例えばスクロールの位置だったり,増減する数値を格納されるものとする. で,ある値以上または以下に値が行かないようにしたい,つまり下限や上限を決めたいとする. このとき,値が変化するたびに発生するイベントを利用し,イベントハン…

これは下書きにもタグを登録するためのページです。

Switch式を使ったのでメモ

C#

条件に応じて何かしら値が決まるときに便利.シンプルに書ける. 加えて,ある条件に対して複数の値がセットで決まるような場合にタプル(Tuple)を使うとさらにシンプル. 細かいところは置いておいて,変数hdが3パターン,変数vdも3パターンあって,それぞれの値に…

httpclientを使うときのベストプラクティス

docs.microsoft.com あと、あのドイツの大学の講義のポケモンapiでも使ってたので参考にする www.youtube.com 上の講義の個人的なメモ. shuhelohelo.hatenablog.com 大事なこと. - HttpClientを使うたびにnewでインスタンスを作成するな! - ASP.NET Coreでは…

Mobile Computing C# オンラインクラス 5 メモ

www.youtube.com デバッグとWebAPIの利用について デバッグTips 条件付きデバッグ 実行時の変数の値の編集 On the flyな変更ができる. ブレークポイントで止まった状態で,変数にマウスオーバーして,表示された変数の値をクリックすると編集できる. いちいち…

ConsoleアプリでXamarin.EssentialsのUnitConvertersを使う

Xamarin.Essentialsには単位変換の静的クラス,メソッドがあり,これはXamarin関係なく便利です. docs.microsoft.com 単位変換のUnitConvertersクラスですが,もちろんXamarin以外のアプリケーションでも使用することができます. Consoleアプリを作成 Xamarin.E…

DataBindingの注意点

プロパティの変更通知における基本をメモしておく. 例えば以下のプロパティがあったとする. private string _firstName; public string FirstName { get => _firstName; set { if(_firstName==value) { return; } _firstName = value; OnPropertyChanged(nam…

Xamlで名前空間を追加する方法

プロジェクト内の任意の名前空間をXamlで参照するには以下のようにする. xmlns:models="clr-namespace:XFDesignTimeData.Models" xmlns:{名前}="clr-namespace:{プロジェクト内の任意の名前空間}"

Windowsのタスクトレイ常駐型アプリを作る

ambilykk.com 環境 Windows10 1908 .NET Core 3.1 preview 3 ウィンドウを表示させない 常駐型アプリの体裁としてウィンドウを表示させないということは大事なことです. コンソールアプリの場合 ソリューションエクスプローラで右クリックしてコンテキストメ…

プログラムからキー入力を行う

こちらを参考にした. whoopsidaisies.hatenablog.com 事前準備 SendKeysを試すためにMicrosoft.VisualBasicアセンブリを使うので追加しておく.SendKeysを使うこと自体には関係ない. ソリューションエクスプローラで,プロジェクトの「References」を右クリック…

ASP.NET Core以外でUserSecretsを利用する

tech-blog.cloud-config.jp ↑こちらの記事がとてもわかり易いです. ソース管理サービスを利用した場合に,ワールドワイドに公開してしまう可能性があり,クラウドサービスの接続情報などをそのまま書いていると危険. なので,このような機密情報はソース管理,つ…

ASP.NET CoreにおけるEF Coreの準備

Modelを作成する public class Student { public int StudentId { get; set; } public string Name { get; set; } [Required] public int CourseId { get; set; } public Course Course { get; set; }//ナビゲーションプロパティ } public class Course { pu…

Entity Framework CoreでカラムにUnique制約をつける

stackoverflow.com 属性でつけることはできないけれど,FluentAPIでつけることができる. DbContextクラスのOnModelCreatingメソッド内で以下のようにする. protected override void OnModelCreating(ModelBuilder builder) { builder.Entity<Member>() .HasIndex(m =></member>…

マーカーインターフェースと拡張メソッド

C#

拡張メソッドを生やすときに,生やせるクラスに制限を設けるための「空のインターフェース」. 目印の役割を果たす. つまり,言い換えると拡張メソッドをはやしたいクラスに継承させておけば,よい. class Program { static void Main(string[] args) { Console.Wr…

NuGetパッケージを作成する。Visual Studioで。[引越記事]

はじめに 自分で作った便利なライブラリをみんなにも使ってほしい、と思ったらNuGetパッケージとしてギャラリーに公開できるのでやってみましょう。 作り方は簡単、Visual Studioからです。 Visual Studioが便利すぎて、Visual Studioがなくなったら何もでき…

XamlでCommand属性がない要素にCommanをバインドするには

EventToCommandBehaviordocs.microsoft.com イベントが発生したときにこのBehaviorを使用してコマンドを実行することの利点は,コマンドとやり取りするように設計されえていないコントロールにコマンドを関連付けできることです. このコマンドとやりとりする…