プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

WPF

WPF ( .NET 5 ) でWindows Runtime API を呼ぶのは超簡単だった

昨日のやつ WPF ( .NET 5 ) でWindows Runtime API を呼ぶ、前にしなければいけないこと - プログラムの事とか は大嘘でした、ごめんなさい、この方法ではAPIを呼び出そうとすると何らかのビルドエラーが発生しますね、その先に進めませんね 反省はするけど…

WPF ( .NET 5 ) でWindows Runtime API を呼ぶ、前にしなければいけないこと

2021/01/13時点でのお話です 2021/01/14追記 今回のブログの通りやっても使えません、翌日のブログ(以下のリンク)が正解 puni-o.hatenablog.com 2021/01/14追記おわり ここから先は試行錯誤中のログ的な感じで残しておきます Visual Studioを最新にしておく…

WPFのDynamicなSolidColorBrushとDynamicなColor

WPFネタです。半日くらい悩んでいました 準備 App.xaml抜粋 <Application.Resources> <Color x:Key="FillColor">#00ffff</Color> <SolidColorBrush x:Key="FillBrush" Color="{DynamicResource FillColor}"/> </Application.Resources> MainWindow.xaml <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> …</grid>

BitmapCacheを指定したWPFアプリが応答しないことがあったりなかったり

という現象にはまっています ググると9年前にstack overflowに同様の質問があったのでリンクは貼っておきます stackoverflow.com 上記質問でも解決方法は示されていません 再現方法 UACの確認ダイアログが出るようにしておきます WPFアプリを準備します 今回…

WPFでSystem.Windows.PointがそのままBindingできるのを知らなかった話

.NET Core 3.0で試してます。それ以外は知りません 結論 いつからなのか、ずっとそうなのか、WPFでSystem.Windows.Pointを編集する際にそのままBindingできました おしまい 以下だらだらと 試してみる ViewModel public class MainViewModel { public Reacti…

WPFで速い描画方法が知りたい!

WPFで描画処理書いていてもっと速く描きたい!(ていうか自分の書いた処理遅い!)ということで実験を兼ねてプロジェクト作ってあわよくばすごい人に速い方法教えてもらおう! プロジェクトはこちら github.com 簡単な説明 class CustomDrawControl : Framew…

WPFのDrawingContextでアニメーション

DrawingContextの謎メソッド(自分の中で)の実験 WPFでちょっと変わった表現をしたい時とか結局自分で描きますよね(WPFに限らずですが) 例えば public class DrawTest : FrameworkElement { protected override void OnRender(DrawingContext drawingCont…

WPFでアプリ画面をキャプチャーしてJpegで保存する(exif付き)

なにでググったらよかったのか分からなかったので自分で書きます(主にexifのところが) ソース github.com とりあえず動くものを置きました。自由に使ってください 以下はその説明みたいな感じ UIElementを画像にする WPFなのでSystem.Drawingは使いません(た…

Microsoft.Maps.MapControl.WPF の残念なうごき

WPF

Microsoft.Maps.MapControl.WPFはNuGetで入れることができるWPF用の地図コントロールです Bing Maps WPF Control ベースとなる地図がBing MapsになっているだけのよくあるTMS(?)のコントロールで最新版は1.0.0.3(2015/02/19)となっています このコントロール…

.Net Framework 4.7 のWPF Touch/Stylus support をあまり考えずに有効にしたらはまったこと

WPF

早いもので半年以上前にリリースされた.Net 4.7です リリースノートはこちら blogs.msdn.microsoft.com この記事に WPF Touch/Stylus support for Windows 10 ってのがありまして、More reliableとかMore capableとかよさげなことが書いてあるんですね とい…

WPFのItemsControlで仮想化が効かない時に確認すること

WPF

なんで仮想化しないんだろー、と悩んでいたら当たり前だったこと 準備 <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource TextConverter}}"/> </DataTemplate> DataTemplateをこんな感じで書いて public class TextConverter : IValueConverter { private int _counter; public object Convert(object value, Type targetType, object paramete…

.Net Framework 4.7で動きが変わったところ(WPF)

WPF

たまたま見つけたの一つだけです <Grid> <Grid.RowDefinitions> <RowDefinition MaxHeight="0" /> <RowDefinition Height="*" /> <RowDefinition MaxHeight="4" /> </Grid.RowDefinitions> <Rectangle Fill="Green"/> <Rectangle Grid.Row="1" Fill="Blue"/> <Rectangle Grid.Row="2" Fill="Orange"/> </Grid> こういうXAMLを用意します RowDefinitio…

WPFで雑にウォーターマーク付きのテキストボックスを作る

WPF

ウォーターマークのあるテキストボックス(未入力だと透かしがでるやつ)がたまにほしくなりますよね ガッツリ作る必要もない時はテンプレートで適当に作ってしまえばいいんじゃない? <Window.Resources> <Style x:Key="WatermarkTextbox" TargetType="{x:Type TextBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TextBox}"> <Grid Background="White"> </grid></controltemplate></setter.value></setter></window.resources>

WPFのInkCanvasで塗りつぶす

WPF

InkCanvasは線を描くものっぽくて閉じた領域の塗りつぶし、みたいなことは標準ではできなさそうでした ということでとりあえず適当に塗りつぶすようにしていみます 塗りつぶす人 System.Windows.Ink.Strokeを継承してDrawCoreで塗りつぶすようにします ソー…

WPFのItemsControl.ItemTemplateでリストの一つ前を参照する

WPF

WPFのItemsControlはすごく強力だとおもいますよね ItemsControl.ItemsSourceにリストをバインドして、ItemTemplateで中身を定義すると自由なリストが簡単に作れるので一度使うと癖になります 簡単な例だとこんな感じ <ItemsControl ItemsSource="{Binding Numbers}"> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Margin="5"> <TextBlock Text="{Binding}"/> </textblock></stackpanel></datatemplate></itemscontrol.itemtemplate></itemscontrol>

WPFでShapeをResourceにして使いまわす

WPF

WPFに限らず今時のアプリではアプリ内で使うアイコン等をベクトルデータで持っていることが多いと思います Illustrator → SVG → XAML って感じでアイコンデータがやってきたりすると思いますが、これをそのままContentに張り付けるのは悪手ですよね(面倒な…

WPFのCanvas上で動くShapeを線でつなぐ

とりあえずこんな感じの奴を用意します <Canvas> <Rectangle x:Name="Rect1" Width="50" Height="50" Fill="Cyan" Canvas.Left="0" Canvas.Top="0"/> <Ellipse x:Name="Ellipse1" Width="50" Height="50" Fill="Magenta" Canvas.Left="200" Canvas.Top="200"/> </ellipse></rectangle></canvas>

WPFで地図にTileを追加したりしてみる

puni-o.hatenablog.com puni-o.hatenablog.com puni-o.hatenablog.com のWPF版です。(今度こそXamarin.Androidだと思った?ねぇ思った?) サクッとやりますよ。 使うのはMicrosoft.Maps.MapControl.WPFです。Nugetでゲットできます。 こんな感じ。みんな地…