まめ - たんたんめん

備忘録 C# / WPF 多め

2020-01-01から1年間の記事一覧

育休制度を使って社会保険料を免除するお得な裏技

普段はプログラミングの記事を書いているエンジニアなのですが今日はプログラミング記事ではなく働く中でのお得な育休の取り方について紹介しようと思います。そのほかにもちょろっとして税金の豆知識とかを蛇足的につらつら書いてみます。 筆者プロフィール…

WPFを3年くらい使ってた人の雑記

WPF

はじめに こんばんはー 。 ブログらしい記事?を書いてみたいと思い立ったので今日は普段業務で利用しているWPFについて掘り下げて書いてみようと思います。 今回は初学者向けの内容となりますので、十分知ってるよーって人は軽く流してください。笑 WPF ? …

0から始めるWebアプリ Blazor 始めました①

はじめに 今日はBlazorに触れてみたいと思ったので記事を書いてみようと思います。 この記事では筆者が調べたWebアプリについての簡単な情報とRiderを使ってBlazorアプリケーションを起動するまでです。 筆者のスキル 業務でC#を利用している デスクトップア…

Git Fork でストレスフリーな gitライフを Git GUI Fork の紹介

こんばんは。皆さん git クライアント何を使っていますか? 私は1年ほど前から Forkを使っています。 Mac版とWindows版があってDan Pristupovさん(Mac 版 ,Swift, Cocoa)と Tanya Pristupovaさん(Windows版 .NET , WPF)によって開発されています。 今日はWin…

C# List<T>のforeachループの最速を検証してみる

C#

元ネタはこちらのブログです。 (C#) List<T>からSpan<T>を引き抜いて高速化 - ネコのために鐘は鳴る 知らなかったのですがListのforeachはパフォーマンスが悪いみたいですね。 今回はブログに書いてある手法のパフォーマンスを実測して検証してみようと思います。 </t></t>…

private なメンバーをC#の黒魔術で高速に取得する

C#

こんばんは。 今日はC#のprivateメンバーを取得してみます。 private なメンバーと言えばReflectionですがいかんせん速度がネックです。 これを.NetCoreから使えるUnsafe.Asを使うとどこまで高速化できるか検証してみました。 今回用意するクラスはこんな感…

C# async / awaitを利用する上での注意点

C#

おはようございます。 今日は C# の非同期構文である async - await について細かい話は色んなブログとかにあったのですが自分用に完結に要点だけまとめます。 構文とか仕組みについてはこの記事では解説しません。 async void 禁止 コンストラクタでの非同…

MVVMにおけるデータ仮想化の実装

概要 デモアプリ 実装 デモで利用したライブラリ こんにちは。 今日は仮想化についての話です。 WPF界隈で仮想化と検索するとVirtulizingStackPanelのようなものViewに関する記事などが多く出てくるとと思いますが 今さら使い方の説明を書いても面白みがない…

WPF - FontAwesomeの利用方法比較と自前で作ったコントロールの紹介

はじめに フォントファイルをそのまま使う 問題 Font Awesome WPF を使う 問題 YiSA.FontAwesome5.WPFを使う 自作版FontAwesomeコントロールの紹介 SVG から C#への Converterの作成 描画コントロール 最後に はじめに FontAweomeとは素晴らしいアイコンをフ…

WPF StoryBoardを使ったアニメーションの拡張

お久しぶりです。久々にやる気になったので技術記事を書きます。 今日はWPFのアニメーションをカスタマイズしてちょっとリッチな表現ができる機能を紹介しようとおもいます。 入門記事やシンプルな組み込み型の記事についてはいろんなブログで紹介されていた…

JetBrains Rider よく使うショートカットキーまとめ

ショートカットキー Ctrl + R + R シンボルリネーム Crtl + T シンボル検索・移動 Alt + Arrow タブ移動 Ctrl + Shift + F 全文検索 範囲選択 + Shift + { スコープ付与 Ctrl + K コメント化 Ctrl + U コメント化解除 Shift + F12 全参照検索 Ctrl + U + U …

C# 印刷機能(Microsoft Print to PDF)を使ってC#から画像をPDF化する

C#

画像をPDF化する方法を調べていたところ印刷機能(Microsoft Print to PDF)からPDFを作成する機能を見つけたのでこれをC#から呼び出しbat処理するためにC#で呼び出すサンプルです。 以下のサンプルではディレクトリを指定した場合は含まれる画像ファイルをま…

WPF DataTemplate.DataType にinterface を指定可能にするDataTemplateSelectorの実装

やりたいこと ListViewやItemsControlでデータを並べる際に interface にってViewを切り替えたい。 ItemsControlのDataTemplate解決の仕組み ListVIewやItemsControlが並べるデータのViewを指定する仕組みについて簡単に解説します。 ItemsControlではItemsS…

WPF タイムライン風のコントロールを作る

WPFでタイムライン風のコントロールを作ってみました。 1000 トラック x 4 クリップくらいは追加しても問題なく動きます。 目盛り数値はスクロール範囲外に描画していますが、スクロールバーの移動に追従して移動します。 各トラックに描画されているメモリ…

WPF TextBlock等で利用される規定のFontFamily

WPF

設定がない場合SystemFonts.MessageFontFamilyから取得したものを利用する デフォルト(規定)のTypeFaceを作成するには var typeface = new Typeface(SystemFonts.MessageFontFamily.Source); もしくは var typeface = new Typeface(SystemFonts.MessageFontF…

WPF DrawingContext.DrawText()で書いたテキストが滲む

WPF

WPF にはUseLayoutRoundingというプロパティがあり、ルート要素 (MainWindow等)で trueにすると文字や絵が滲まなくなることは有名だが DrawingContextを使って独自に文字列を描画している場合は滲んでしまう。 この対策としてルート要素に下記Propertyを指定…

WPF DependencyProperty SetCurrentValue と SetValueの違い

今日は DependencyProperty.SetValue()とDependencyPropertySetCurrentValue()の違いについて具体例を出して挙動の違いを見ていこうと思います。 「ViewModelの値とViewの値が違うんです。」みたいな相談をたまに受けるんですが大体原因はこれです。 まずはD…

JavaScript Electron導入

Electron とは www.electronjs.org マルチプラットフォームの実行Framework mac , windows java script , html 5でアプリケーションが作成できる 開発に必要なもの Node.js VisualStudio Code ( あると便利 ) 余談ですが VSCodeは Electron製です。 VSCodeを…

C# 値型と参照型の違い Box化とは

C#

概要 今日は値型と参照型、値のBox化について解説します。 まず、値型と参照型の違いについて解説し、そのあとにBox化についてを解説します。 1.値型と参照型の違い C# には値型と参照型があり値型は int , bool , float 等の組み込み型の他に struct がある…

WPF TsNodeをnugetに公開しました

TsNodeとは TsNodeとはWPFから扱えるグラフエディター(ノードエディター)風のアプリが作れるカスタムコントールライブラリです。 今回、より簡単にいろんな人が使えるようにTsNodeをnugetに公開しました。 まずは、画面表示するまでのチュートリアルをやり…

WPF 無限ScrollViewer

無限スクロールビューアーというものを作ってみました。 例によってノードエディターの付属品としての実装です。 ScrollViewerを継承するアプローチで実装をしようと思ったのですが、負の値がうまく扱えず断念。 仕方なくCustomControlとして実装しました。 …

旧式C#プロジェクト(csproj)をSDKスタイルへ移行する方法

C#

旧式プロジェクトとは下記のような形式で、従来の.NET では一般的なものでした。 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> </project>