2014年05月09日

Mac OS X Parallels [ Win7 ] 上での WPFアプリケーションのレンダリングがへん?

下記の動作環境で...

 ・Mac OS X 10.9.2
 ・Parallels 9.0.24229
 ・Windows 7 Professional

...WPFアプリケーションを動かした際、アプリのデザインの組み方によって?
レンダリングのモードが期待通りにならない場合があるっぽい。(たぶん)

RenderCapability.Tierプロパティで描画層を調べると「2」が返却されるので、
WPFアプリ的にはハードウェアレンダリングOK。
(もちろんレジストリ設定 [ DisableHWAcceleration=0 ] もOK)

Parallelsの構成でビデオカード設定はDirectX10となっているので、
Parallels的にもハードウェアレンダリングOK。

...のハズなのに WPF Performance Suite(WpfPref.exe)で確認すると、
アプリによって...

 ・HW IRTs Per Frame が ゼロ
 ・SW IRTs Per Frame が 50オーバーで暴れまくり
 ・Draw software rendering with purple は鮮やかな紫色

となっており、ハードウェアレンダリング一切されず、ソフトウェアレンダリング
されまくりという結果に。 無論、対象のアプリは入力反応等がすごぶる悪い。

今のところの調査結果としては、、、

 1.TabControl の使用はOUT
 2.ScrollViewer の使用はOUT
 3.GroupBoxを入れ子にするとOUT

、、、たぶん、2と3は普通のWindows環境でもOUTっぽい。

ちなみに、MicrosoftのサイトにあるBrushの使い方によってはハードウェア
レンダリングがされない云々に抵触する箇所はありませぬでした。

普通のWindows機では期待通りの速度で動くのでまぁ良いのだけれど。

ちょっと解せない。 うーん。



posted by Jack at 21:42| 東京 ☀| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2013年09月09日

WPF 動的パネルは結構便利

言語問わず、昔からちょこちょこ使ってる動的にコントロールを足す手法と
同じっちゃー同じですが、 WPF で 動的に StackPanel やら WrapPanel やら
を追加してやる方法だと、ある程度スッキリ?したコードで画面をまるっきり
動的に作れるくらい強力! ・・・だと思う。笑

例えば...

続き・・・
posted by Jack at 14:10| 東京 ☁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2013年09月05日

C# から Win32 コールバックプロシージャ への フック

タイトルの通り、C# 側から Win32 のコールバックプロシージャへ
フックするやり方のメモ。 んまぁ、ここまでして何かするシーンって
オイラの作ってるようなレベルのアプリじゃあんまないんだけどね(笑)

続き・・・

続き・・・
posted by Jack at 14:04| 東京 ☁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

豆知識 : WPF の ハードウェアレンダリング加速

WPFアプリの描画がもうちょっと速くならんかねーという時には、
initialize メソッドとかにこんな感じでレンダリングを加速させる
レジストリ値を入れてみると若干の改善がみられるかもしれません。
ハードウェアレンダリングなのでマシンにもよりますがー。

あくまで描画の高速化なので、ループ処理が速くなるとかじゃーないです(笑)
やたら派手なアプリやコントロールがたっぷりなアプリだと、ややてろっとした
画面描画が、ややシャキッとした画面描画にかわります♪

改善がみられなくて書いといていいかも。特に弊害なさそうなので。(たぶん)

↓ これを貼付ければ(多分)動くんではなかろうかと思いやす。

続き・・・
posted by Jack at 13:13| 東京 ☁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2013年09月02日

なぜにメモリーリークする? WPF

結構、意図しないエラーが出てしまうWPF・・・
いや、エラーを出してしまっている自分がアウトなんだろうけど・・・

今のところの見解は、、、

 1. 強参照が残っているらしく各ウィンドウの開く/閉じるを繰返すとメモリが増えていく。
 2. ウィンドウオープン時になにやらEffect系の処理で失敗するっぽい。

、、、と見受けられる。

んで、1については今さら全画面修正はできんので、、、

 ↓ 各画面クローズ時に親側クラスで画面のトップノードを取得。
 ↓ トップノード配下のコントロールをすべてRemove。
 → 強制ガベージ

、、、ってな感じでメモリーリーク解消。

んで、2については未だよく原因が確定しないのだが、ScrollViewerを設けたことで
画面の文字が滲んでしまう件を解決するために施してあった、各コントロールに透明な
Effectを適用している箇所が怪しいので除去してみた。

もしこのEffectが原因だったとして、今でこそScrollViewerはすべて廃止しているから
良いものの、もし廃止してなかったらメモリーリークは治っても滲み問題は残るって
ことになるわよね? んー、、、わからん。

このパッケージ製品にWPFを言語選定してしまったことを後悔することが多いなぁ・・・
んまぁ、デザインテンプレートとか強力で工数削減にもなったんだけども・・・
ちょっと技術的というか言語仕様?的にハードルが高すぎる気がするね。WPF。

ってなことで個人的には WPF は失敗作なんじゃ・・・って感じる。
ネットみてても国内外問わず、あちこちで結構不評な感じよね。
今いち流行らないのも頷ける。

今後また言語選定する機会があったら100%採用しないだろな。

posted by Jack at 18:05| 東京 ☁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2013年01月11日

WPF DataGrid 列幅 のセット

WPF の DataGrid で列幅を指定して表示したいってのが
思っていたより面倒だったのでφ(..)メモ

まず、、、

↓↓↓こんな感じのコントロールに含まれるノードを取得するメソッドを用意してー

public List FindVisualChildList(
    DependencyObject obj
) where childItem :DependencyObject {

    List itemList = new List();
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++){
        DependencyObject child = VisualTreeHelper.GetChild(obj, i);
        if (child != null && child is childItem){
            itemList.Add((childItem)child);
        }else{
            List childOfChild = FindVisualChildList(child);
            if (childOfChild.Count != 0) itemList.AddRange(childOfChild);
        }
    }
    return itemList;
}

↓↓↓こんな感じのDataGridの指定ヘッダにwidth値をセットするメソッドを用意してー

private void setColumnHeaderWidth(DataGridColumn column, double width){

    List lstHeader = 
        this.FindVisualChildList(this.dataGrid);

        foreach(DataGridColumnHeader header in lstHeader){
            if(header.Column != column) continue;
            header.Column.Width = width;
        }
    }
}

↓↓↓DataGridの列幅はヘッダに従うんだぜっ!ってプロパティをセットしてー

this.dataGrid.ColumnWidth = new DataGridLength(1.0, DataGridLengthUnitType.SizeToHeader);

↓↓↓こんな感じで呼出すとDataGridのカラム幅をセットできるのでした。

foreach(DataGridColumn col in this.dataGrid.Columns){
    this.setColumnHeaderWidth(col, 50);
}

うーん...
いと難し (;・∀・) 笑
posted by Jack at 21:15| 東京 🌁| Comment(2) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2013年01月09日

EOSの処理などで

CSVやら固定長やらのEOSのデータを読み取ったりするときに
便利かなぁ〜と思い、サンプルを作ってみました。 (;´∀`)

使い物になるかどうかわかりませんが、適当に加工して使える
ようなら自由に使ってくださいまし (・∀・)

TestData.cs

大雑把に概要を説明しやすと...
続き・・・
posted by Jack at 18:19| 東京 ☁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2012年12月14日

ちょっとハマったのでメモ

メッセージを出す程度のVBScriptを作って、ファイルをダブルクリックしたら
行1 文字1 の箇所で「文字が正しくありません」だそうで ( ゚д゚)
VBSの中身を疑ってみたところでこれといった処理をまだ書いていないので ( ゚д゚)

同様に

レジストリを更新するREGファイルを作って、ファイルをダブルクリックしたら
・・・指定されたファイルはレジストリ スクリプトではありません。
 ・・・インポートできるのはバイナリ レジストリ ファイルだけです。

とかちょー難しいこと言われて ( ゚д゚)

んで、いろいろ調べてみたけどそれっぽいのを見つけられず、試行錯誤していたら
・・・わかりましたよ! 原因が!

うまく動かなかったVBSファイルやらREGファイルは、VisualStudio2010でクリエイトした
ファイル
だったわけだが、VS介在せず普通にクリエイトしたテキストファイルを作って、
同じ中身のVBS、REGファイルとしたら動くじゃあーりませんか!(゚д゚)!

んなのでファイルのプロパティを調べてみたら、

Authenticated Users

なるユーザーが、VSでクリエイトしたファイルには存在せず、
VS介在なしでクリエイトしたファイルには存在する
といった
違いがあったのねーん!(他にも違いはあったが関係しているのはこのユーザだけみたい)

んで結局、普通にテキストファイル作って、VS側(あ、VSS管理下ね)にうわっ被せればOKだったってオチ。

posted by Jack at 18:39| 東京 ☀| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2008年10月30日

厳密名コンパイル

ASP.netにて、Webアプリケーションを構築する際に、Binフォルダに

オリジナルのDLLなどを配置する場合、配置するDLLに対し、厳密名

コンパイルを施す必要があります。



厳密名コンパイルとは、端的にいうと、IISに対し、


 「 このDLLは決して怪しいものではございませんので、

   どうかIIS様のお力で、DLLを動作させてやってください 」


といったお願いをするための通行許可証みたいものです。



厳密名コンパイルを行うことで、対象となるDLLに対する、IISの

セキュリティブロックが解除され、DLL内の処理をWebアプリケー

ション側から使用することが可能となります。



厳密名コンパイルは、おおよそ、以下の手順で行うことができます。



続き・・・
posted by Jack at 13:50| 東京 ☁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする

2008年10月23日

続・Enterキーでフォーカス移動

以前書いた

Enterキーでフォーカス移動

続きです。


まず、今回の本題とはちょっとそれますが、以前のサンプルコードでは、

Button(or LinkButton等)コントロールをクリックした際に、確認ダイア

ログを出したい場合において、上手くいかなかったので、以下の感じで

改良しました。


続き・・・
posted by Jack at 02:17| 東京 🌁| Comment(0) | TrackBack(0) | C#、VB.net、ASP.net、Ajax | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。