問題タブ [gdi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3205 参照

winapi - Win32BitBlt-画像を水平方向にミラーリング

したがって、StretchBltは、nWidthSrc/DestおよびnHeightSrc/Destパラメーターを否定することにより、画像を水平方向および/または垂直方向にミラーリングできることを読みました。StretchBltのパフォーマンスオーバーヘッドのないこの機能が必要です。BitBltで同じ手法を試しましたが、機能しませんでした。

StretchBltを使いすぎずに、BitBltのような単純なもので画像をミラーリングする方法はありますか?または、ソースと宛先のサイズが同じ場合、StretchBltはパフォーマンスに影響しませんか?

0 投票する
2 に答える
2045 参照

winapi - 透明なトップレベル ウィンドウ

透明なトップレベル (つまり、WS_CHILD ではない) ウィンドウを作成したいと考えています。ただし、特定のピクセルが完全に透明または完全に不透明な単純なマスクにはしたくありません。そして、ウィンドウ全体にアルファレベルがあるようなものにしたくありません。むしろ、ビットマップがその背後にあるウィンドウとブレンドされるように、ウィンドウを基本的に完全に透明にし、ビットマップをアルファチャンネルで描画したいと思います。たとえば、画像自体のアルファが不透明から完全に透明にブレンドされて中心から外側に向かうサンバーストを想像してみてください。

どちらも私がやりたいことに近いが、完全ではない2つの方法を見つけました。領域を使用して、完全に透明に描画されたセクションを切り取ることができます。レイヤード ウィンドウを使用して、同様のことを行うこともできます (または、ウィンドウ全体をわずかに透明にすることもできますが、それは私が望んでいることではありません)。WS_EX_TRANSPARENT や WS_EX_COMPOSITE などの他のスタイルを調べましたが、役に立ちませんでした。

子ウィンドウは親の領域内で親ウィンドウとブレンドされているため、この種の効果を子ウィンドウでうまく機能させることができます。トップレベルのウィンドウで同様に動作させることは、私を避け続けています。

人々が他のプログラムで見たことがあると私に保証したので、私はこれができることを知っています. ここでウィンドウのペイントに関する単純なことを完全に理解していないように感じます。

0 投票する
3 に答える
3437 参照

c# - .ScaleHeightおよびScalewidthに相当するネット

基本的に私がやろうとしているのは、描画作業を簡単にすることです。

VB6の時代には、ScalewidthとScaleheightと呼ばれるものがあり、それらをカスタム値に設定できました。元。100。

次に、使用可能なスペースの中心に点を描画する必要がある場合は、50,50で描画します。

.Netで同様の機能を取得する方法はありますか?

そのため、描画キャンバスのサイズに関係なく、絶対座標を使用して描画できます。

0 投票する
7 に答える
13529 参照

c# - .NET で大きなビットマップを使用するにはどうすればよいですか?

軽量の画像表示アプリケーションを作成しようとしています。ただし、.NET にはシステム メモリの制限があります。

大きなビットマップ ( 9000 x 9000 ピクセル以上、24 ビット)を読み込もうとすると、System.OutOfMemoryException が発生します。これは、2GB の RAM を搭載した Windows 2000 PC 上にあります (そのうち 1.3GB が使用されています)。また、ファイルのロードを試みるのにも多くの時間がかかります。

次のコードは、このエラーを生成します。

次のコードも同様です。

また、これを行うだけで十分です。

後者のコードは、GDI で使用するためのものです。これを調査しているときに、これは実際にはメモリの問題であり、.NET が 1 つの連続したメモリ ブロックで必要な量の 2 倍を割り当てようとすることがわかりました。

http://bytes.com/groups/net-c/279493-drawing-large-bitmaps

私は、他のアプリケーション (Internet Explorer、MS ペイントなど) から、大きな画像をすばやく開くことができることを知っています。私の質問は、.NET で大きなビットマップを使用するにはどうすればよいですか?

それらをストリーミングしたり、メモリ以外でロードしたりする方法はありますか?

0 投票する
2 に答える
5146 参照

c# - 複数のモニターで画面全体の DeviceContext を取得する

C# を使用して、すべての上に (マウスで) 線を引く必要があります。P/Invoke を使用して、デスクトップ ウィンドウの Graphics オブジェクトを取得できます。

DesktopGraphics = Graphics.FromHdc(GetDC(IntPtr.Zero));

ただし、このグラフィックス オブジェクトを使用して描画したものはすべて、左側のモニターにのみ表示され、右側のモニターには何も表示されません。失敗でも何でもなく、表示されないだけです。

Graphics オブジェクトを作成すると、可視クリップ領域が 1680 x 1050 であることが示されます。これは、左のモニターの解像度です。左モニターのデバイスコンテキストのみを取得しているとしか思えません。両方 (または任意の数) のモニターのデバイス コンテキストを取得する方法はありますか?


EDIT 3/7/2009: 私が使用した修正に関する追加情報。

colthium が提供する修正プログラムを使用して、各モニターのグラフィック オブジェクトを作成するための次のコードと、グローバル マウス ポイントをグラフィック サーフェス上の有効なポイントに変換できるようにオフセットを格納する方法を考え出しました。

0 投票する
6 に答える
24665 参照

c# - C#.NET での JPEG 2000 サポート

.NET は、GDI ライブラリを使用して JP2 (Jpeg 2000) ファイルを開くことができないようです。Google で検索しましたが、これを行うためのライブラリやサンプル コードが見つかりません。

誰かアイデアはありますか?必要がない限り、図書館にお金を払いたくありません..

0 投票する
1 に答える
1140 参照

c# - Gdi+ の MM_ISOTROPIC マッピング モードと同等

等方性マッピング モードを使用する C++/GDI 描画コードがあります。メモリ内のビットマップに描画するために C# プロジェクトで再利用しようとしている多くの描画コードを含む大きなオブジェクト モデルがあります。System.Graphics オブジェクトを適切に設定して同じ画像を生成するのに問題があります。System.Graphics オブジェクトで MM_ISOTROPIC マッピング モードに相当するものを設定する方法はありますか?

マッピング モードを準備する C++/GDI からの関連コードを次に示します。

0 投票する
3 に答える
2863 参照

windows-mobile - WindowsMo​​bileまたはCEデバイスでのGDIパフォーマンス

多くのベクターグラフィックを使用するWindowsCEアプリケーションがあり、場所によっては非常に低速です。私は現在、フリッカーフリーリフレッシュ用のビットマップを介したレンダリングにGDIを使用しています。通常、私は大きな3Dマップの一部をウィンドウ表示しています。一部のデバイス(166mhz SH4など)では、大きなデータセットの場合、これは3〜5秒の更新時間で遅くなります。私の質問はこれです。

  • WindowsMo​​bileとWin32のグラフィック操作の相対速度を比較した人はいますか。別の言い方をすれば、WinCEバージョンに適用可能なソフトウェアのWin32バージョンからのプロファイリング結果は、GDI呼び出しのみを調べていると仮定しています。

  • WinCEプラットフォーム(C ++アプリ)でオンボードのプロファイリングを試した人はいますか?はいの場合、どのツールを使用しますか?

  • WindowsCEでの描画速度を向上させる方法を知っている人はいますか。私は現在、前の質問からのフィードバックに続いてFastGraphを見ていますが、これは少し長期的な解決策です。悪いことですが、次のリリースに向けてより高速に実装できるものを探しています。

0 投票する
2 に答える
500 参照

asp.net - ASP.NET コントロールをオンザフライで画像に変換することは可能ですか?

ASP.NET で、複数行のテキスト ボックス (またはサード パーティのリッチ テキスト ボックス) を使用している場合、ポストバック中にその内容を画像に変換できますか? 変換とは、フォーマットとコンテンツを画像に保持することを意味します。

たとえば、リッチ エディット ボックスがあり、エンド ユーザーはファンシー テキスト フォントと記号を直接追加できます。「送信」をクリックすると、このリッチ テキスト コンテンツをビットマップとして保存する方法はありますか? または、この組み込み機能を備えたサードパーティのリッチ編集ボックスはありますか?

GDI+ または WPF が必要かもしれませんが、どこから始めればよいかわかりません。

0 投票する
2 に答える
2375 参照

c++ - 画面の DC C++ への描画後に画面の再描画を強制する

Windows Mobile カスタム SIP を作成しています。ユーザーがキーボードのボタンを押すか「ホバー」すると、対応する選択された画像 (iPhone 風) が ::GetDC(NULL) を使用して画面の DC に描画されます。Win32 C++ で開発されています。

私の問題は、以前に描画されたキーを消去して、画面を再描画できないことです。私はそれを強制するために考えられるすべてを試しました.::RedrawWindow()NULLまたはGet..Window関数のいずれかをHWNDとして使用するすべての異なるパラメータの組み合わせ、およびフラグのすべての組み合わせ(INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN など)。また、Rect を無効にして、::GetActiveWindow と ::GetForegroundWindow、::GetDesktopWindow などを使用したバリエーションを使用して、基礎となるアプリの再描画を強制しようとしました。 Windows Mobile デバイスで使用しています。誰にもアイデアはありますか?どんな助けでも大歓迎です。

私のジレンマを説明するために、いくつかのスクリーンショットを含めました。

スクリーンショット前 スクリーンショット

前 http://img13.imageshack.us/img13/9861/cezoom1.png 後 http://img3.imageshack.us/img3/7481/cezoom2.png

よろしくお願いします!