Windowsの欧文フォント表示時に無理やり日本語フォントを対応させるには、Fontlinkという機能を使う。レジストリを変更するので実施は自己責任でお願いします。レジストリエディタで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
の場所を探して、新規要素として
キー名に、リンクする欧文フォント名 例:Inconslate
種類を、複数行文字列
値に、日本語フォントファイル名,日本語フォント名 例:Meiryo.ttc,Meiryo
を追加する。こうするとInconslateフォントで日本語表示したときはMeiryoで表示される。
追加したレジストリをエクスポートした場合は
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Inconsolata"=hex(7):6d,00,65,00,69,00,72,00,79,00,6f,00,2e,00,74,00,74,00,63,\
00,2c,00,4d,00,65,00,69,00,72,00,79,00,6f,00,00,00,00,00
とこんな感じになってます。
参考にしたのはデスクトップ・カスタマイズ:フォントリンクの方法のサイトです。
「DARK SOULS™ II: Scholar of the First Sin」がSteamで 6月15日 2:00am JSTまで66%OFFセール中。ゲームが安いのはいいが、進んでないゲームが溜まっていく・・・・
C# WPF環境でDataGridをクリックした時のセル位置を求める。VisualTreeHelperを使ってDataGridCellとDataGridRowをたぐってcolumnとrowを調べる。formと違ってめんどくさい。他にも方法があるかもしんない。
// // DataGrid dg ... Clicked Control // Point pos ... Position in DataGrid axis // HitTestResult result = VisualTreeHelper.HitTest(dg, pos); if (result == null) { return; } DependencyObject dep = result.VisualHit; while (!(dep is DataGridCell || dep is DataGridRow)) { if (dep == null) { return null; } dep = VisualTreeHelper.GetParent(dep); } DataGridCell dgcell = null; int c = -1; if (dep is DataGridCell) { dgcell = dep as DataGridCell; c = dgcell.
ダークソウルPC版について現在署名活動を行っています( https://t.co/kva5omyGV6 … )。説明をよく読んで賛同いただける方は、署名やソーシャルメディアでの紹介等で応援をどうか宜しくお願いいたします!
— HAL2039 (@hal2039) 2016年3月31日
たまたま見つけましたが、「日本でもダークソウルのSteamWorks版を販売してください!」という署名運動を見つけました。現在国内版ダークソールは、MicrosoftのGFWLサービスに伴い、オンラインプレイや新たな起動や再インストール等ができなくなっております。わたしの場合も、HDDを新調した後に再インストールをしようとしたらこれにはまり、起動できなくなりました。あきらめておりましたが、こうやって地道に署名活動を頑張っておられる方をたまたま見つけたので、賛同およびここにご紹介させていただきます。
MAPIでAppointmentを作る場合にTimeZoneの指定をする時のメモ。TimeZoneの元オブジェクトはApplication下にあるTimeZonesコレクションから参照する。
Using Outlook = Microsoft.Office.Interop.Outlook; Outlook.Application app = new outlook.Application(); Outlook.AppointmentItem apoItem = app.CreateItem(Outlook.OlItemType.olAppointmentItem) as Outlook.AppointmentItem; Outlook.TimeZones tzs = app.TimeZones; apoItem.StartTimeZone = tzs["Tokyo Standard Time"];
くわしくはHow to: Create an Appointment That Starts in the Pacific Time Zone and Ends in the Eastern Time Zoneを参照。
C#でEnumの列挙子の名前を表す文字列をenum値に変換する方法のメモ
enum Test { alpha, beta, gamma } Test ret; bool flag = Enum.TryParse<Test>("alpha", true, out ret); return ret; // == Test.alpha
c#で任意の型TがType型の変数tで与えられている場合のインスタンスを作る場合の方法。またはその配列のインスタンスを作る方法のメモ
// 任意型tのインスタンスの作成 Type t = typeof(***); var tInst = Activator.CreateInstace(t); // 型tの配列t[]のインスタンスの作成 Type t = typeof(***); Type ta = Type.GetType(t.toString()+"[]"); Int num; var tInst = Activator.CreateInstace(ta, num); // または Type t; Int num; var tInst = Array.CreateInstace(t, num); // 追加 var tInst = Activator.CreateInstace(t.MakeArrayType(1), num);
昔のDLLがBitmapしか対応してないので、System.DrawingのBitmapをWPFのBitmapSourceへ変換する。
[System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject); public BitmapSource BmpToWPFBmp(System.Drawing.Bitmap bitmap) { IntPtr hBitmap = bitmap.GetHbitmap(); BitmapSource source; source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); DeleteObject(hBitmap); return source; }
WPFでUIスレッドとは別のスレッドからUIを変更するときの作法。いつもやりかた忘れるのでメモ。formの場合のInvokeRequiredとinvokeに当たる。状況に応じてInvokeをBeginInvokeで非同期にするのもあり。VSでCheckAccessが入力補完対象にならないのはなぜだろう。
if (mycontrol.Dispatcher.CheckAccess()) {
mycontrol.Content = "test";
}
else {
mycontrol.Dispatcher.Invoke((Action)(() =>
{
mycontrol.Content = "test";
}));
}
もう過ぎてしまったが、STEAMにて先週末50%OFFセールだったので、いまさらメタルギア5(MGSV-TPP)をぽちった。いろいろ物議を醸したが、やっぱり面白いわ。これ。最近これのせいで寝不足です。