1

誰かが vc から c# カスタム コントロールを作成する方法に光を当てることができますか? デフォルト コントロールのような C# プロジェクトで使用されるグラフィカル コントロールを作成する必要があります。これは、パフォーマンスが重要であり、パフォーマンスの低い Windows CE デバイス上にあるためです。c/cpp で行う必要があると思います。

4

3 に答える 3

2

シンプルで率直な答えは、できないということです。限目。Compact Framework はマネージ C++ (C++/CLI) をサポートしていません。ここで、UI コンポーネントを COM コントロールとして作成し、マネージ側のすべての COM インターフェイスを手作業で作成できると思いますが、それはビルド、デバッグ、特に展開するのに悪夢です。

安全でないコードにドロップし、C# コードで目的の Win32 API に対して P/Invokes を使用する方がよいでしょう。ほとんどの場合、目的を達成し、優れたパフォーマンスを得ることができます。速度のために絶対に C で実行する必要がある場合は、P/Invoke を介してバッファーに渡すライブラリを作成します。たとえば、Imaging ライブラリは、このタイプのメカニズムを使用してサムネイルなどを作成します。

于 2012-09-07T02:39:11.870 に答える
1

Cで完全なコントロールを作成し、C#などから制御する必要があるものを公開する非常に薄いラッパーを提供することができます。フォームコントロールについて話している場合、必ずしもUserControlまたはControlのモデルに従う必要はありません。これは、正しく理解するのがやや複雑であり、これらのコントロールにすべてのコストがかかる場合です。その非常に厳しい。

また、管理側でより多くのことを実行しようとするWPFを調査して、より高速にすることもできます。それはそれ自身の合併症を持っています。それは通常それ自体でかなり巧妙に合成/「ビットブリット」しますが、しばしば船外に出ますが、最終的にはダブルバッファモードで同じ合成を行うダブルバッファフォームコントロールよりもはるかに高速です(または可能性があります)。ただし、フェイクウィンメッセージの処理が急増すると遅くなります。(大幅に単純化しすぎるため)

だから、単にノーと言うのではなく、それらがあなたの選択肢だと思います。繰り返しになりますが、腕の長さで制御し、適切に記述されたC側のレンダリングを実行して、ネイティブパフォーマンスに近づけることができます。

編集:

質問のWindowsCEの部分を見逃しました。私の悪い。私が言ったことが当てはまるかどうかはわかりません。

于 2012-09-07T02:57:33.367 に答える
0

Silverlight ではなく、WinForms について話していると思います。

その必要はありません。

Windows CE 上の .NET は CIL の JIT を実行します (従来の Java のように解釈する Micro Framework とは異なります)。C# でコントロールを記述しても、実際にパフォーマンスが低下することはありません。最もコストのかかる操作はペイントです。C# または C++ を使用する場合は、GDI を使用してこれを行うことになります。高価な操作が存在するのは GDI の関数呼び出しの内部です。節約できる唯一のことは、Managed と先住民の領土ですが、それは実際にはほとんど意味がありません.

C++ を使用して Windows CE GUI を作成する必要がある唯一の状況は、ビデオまたはアニメーション フレームワーク (Flash など) を使用している場合であり、その場合は C++ を完全に使用し、.NET は使用しません。あなたのGUIのために。

于 2012-09-07T00:18:45.880 に答える