tmytのらくがき

個人の日記レベルです

Win2Dのことをメモしておくだけ

WinRTとかUWPな環境からDirect2Dをらくちんに操作できるWin2Dというライブラリがありますが、今後使う機能をメモしておくだけ。

var canvas = new CanvasRenderTarget(/**/);
var canvas2 = new CanvasRenderTarget(/**/);

var blend = new BlendEffect{
  Foreground = canvas,
  Background = canvas2,
  Mode = BlendEffectMode.SoftLight
};


using(var ds = _image.BeginDrawingSession()){
  ds.DrawImage(ds);
}

こんなんすると、画像の合成ができる。これについてのリファレンスがこのあたり。

http://microsoft.github.io/Win2D/html/T_Microsoft_Graphics_Canvas_Effects_BlendEffect.htm

http://microsoft.github.io/Win2D/html/T_Microsoft_Graphics_Canvas_Effects_BlendEffectMode.htm

KATANA01がやってきた

うちにもKATANA01がやってきました。

とまぁこんな感じです。セットアップ中にログインのテキストボックスとかが見えないですが、ありそうなところをタップすると白く反応してくれるので一応場所はわかります。ちなみに上がメールアドレス、下がパスワードです。入力した文字も見えないので心の目で入力してください、

Windows Phoneのアドレスバーからの検索にGoogleを使う

デフォルトBingで使いづらいのでとりあえずGoogleにしよう。

まずGoogleを表示します。http://www.google.com/ とか入れて表示してね。

f:id:tmyt:20151201015025p:plain

次に設定をだします。

f:id:tmyt:20151201015039p:plain

詳細設定を表示して

f:id:tmyt:20151201015051p:plain

検索エンジンを変更

f:id:tmyt:20151201015105p:plain

たぶんGoogleがいるのでGoogleを選択して既定に設定

f:id:tmyt:20151201015121p:plain

これでアドレスバーからの検索がGoogleに!

Windows10でVPN接続するとストアアプリが外に出られなくなる

らしいんだけどそんなあほな。と思って、指摘された状態にしてみた、ら。

f:id:tmyt:20151123154424p:plain

この状態で、次のコードを動かしてみる。

private async void Page_Loaded(object sender, RoutedEventArgs e)
{
    var client = new HttpClient();
    var ret = await client.GetAsync(new Uri("https://www.google.com"));
    ret.ToString();
}

するとこうだ。

f:id:tmyt:20151123154519p:plain

WinRT information: A network capability is required to access this network resource

んなあほな。とおもってAppxManifestを確認してみると、こう。

f:id:tmyt:20151123154622p:plain

でもやっぱり例外がでるので、"Private Networks (Client & Server)" にチェックを入れると例外が出なくなったので、まぁそういうもんらしい。そういうもんなの?

TH2で8.x向けストアアプリが320pxにならなくなった。らしい。

Windows 8向けストアアプリはデフォルトで320pxまで、Windows 8.1向けストアアプリは設定で320px幅にすることができるのですが、どうもWindows 10(1511) ようするにTH2でその設定が無視されるようになったようです。Aristeaが320pxにならない!と複数の方から報告をいただきました。

こまったのでどうするかっていうとリフレクションでどうにかします。

typeof(ApplicationView).GetRuntimeMethod("SetPreferredMinSize", new Type[] { typeof(Windows.Foundation.Size) })
    ?.Invoke(ApplicationView.GetForCurrentView(), new object[] { new Windows.Foundation.Size(320, 600) });

こんだけ。簡単ですね!

やってることとしては、Windows 10で追加されたAPIを呼んでいるだけです。このAPIはアプリのウィンドウサイズをどこまで小さくしていいかをアプリからシステムに対して宣言するAPIです。これを使って320pxまで縮めていいよーとシステムに通知するとTH2でもうまくいくようになります。

UWP向けの引っ張って更新ライブラリを車輪しました

Windows 10 UWP向けの引っ張って更新ライブラリを作ってみました。NuGetにあります。

いまなぜ車輪なのか

  • ScrollViewerを使った実装は操作感が好きじゃない
    • 更新中にヘッダが固定されない
    • ヘッダが固定される実装は引張感がない
  • UWP的にListView on ScrollViewer はあんましよくない

という理由でこれらを解決するべくやってみたものがこれ。いちおう理由としてあげたところについては解決しています。まだもうちょっと調整したほうがいいところはたくさんありますがそれはおいおい…

使い方

Githubのページにも書いてますが、XAMLでちょこっとかいて、イベントハンドラをちょこちょこっと書くといいです。ICommandは現状サポートしてません。

XAMLはこんなかんじに書きます。

<ListView xmlns:uwp="using:AmazingPullToRefresh.Controls">
    <uwp:PullToRefreshAdorner.Extender>
        <uwp:PullToRefreshExtender RefreshRequested="PullToRefreshExtender_RefreshRequested" />
    </uwp:PullToRefreshAdorner.Extender>
</ListView>

そんでもってイベントハンドラをこんなかんじに。

private async void PullToRefreshExtender_RefreshRequested(object sender, RefreshRequestedEventArgs e)
{
    var deferral = e.GetDeferral();
    await Task.Delay(2500); // something
    deferral.Complete();
}

GetDeferral()して、Complete するまでの間ヘッダが更新中になります。WinRT的ないい感じになっていると思います。ライセンスはMITなのでそこそこ使いやすいと思います。

TODO

  • ヘッダテンプレートのカスタム
  • 慣性スクロールの感じをもっと良くしたい

Surface Book でGPUの使用を明示的に指定する

Surface BookにNVIDIA GPUついてるけども使われないことがしばしば。具体的にはMinecraftとか。そういうときにはコンテキストメニューから高パフォーマンスNVIDIAプロセッサを選択して起動するとうまくいくことがあります。

f:id:tmyt:20151114133332p:plain

こうやってあげればMinecraftもこのとおり。

f:id:tmyt:20151114133359p:plain