問題タブ [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 投票する
2 に答える
1259 参照

c++ - GDI+ と C++ を使用して SQL Server データベースから画像を読み込んで保存するにはどうすればよいですか?

特に、ブロブとして保存された JPG 画像を読み込む必要があります。GDI+ を使用すると、データベースからではなく、ファイルから画像を簡単に取得できます...

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

c++ - GDI+ でレイヤーを実装する方法はありますか?

私の考えは、メモリ上にいくつかの Graphics オブジェクトを描画し、画像を描画するときにそれらを結合することです。

しかし、私はそれを行う方法について正確な考えを持っていません。GraphicsContainer を使用しますか? または、オブジェクトをメタファイルとして保存しますか? (これらは一時的なオブジェクトです。メモリに保持したいと思います)

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

c++ - GDI+ と C++ でちらつきを減らす

C++/MFC アプリケーションで GDI+ を使用していますが、ウィンドウのサイズが変更されるたびにちらつきを避けることができないようです。

私はすでにこれらの手順を試しました:

  • で TRUE を返しましたOnEraseBkGnd()
  • で NULL を返しましたOnCtlColor()
  • このコードに従ってダブルバッファリングを使用しました:

私は何か間違ったことをしていますか?または、これを達成する別の方法はありますか?

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

c# - RAW 画像ファイルを GDI+ ビットマップとして読み込む

かなり高速な GDI+ ビットマップとして RAW 画像ファイル (特に Canon CR2 および Adob​​e DNG ファイル) を読み取る良い方法はありますか?

インストールされている画像コーデックを使用して画像を読み取り、それを画像コントロールに表示する WPF で実行されている例を見つけました。そして、この例を変更して、WPF イメージを MemoryStream に書き込み、そこからビットマップを作成することで、GDI+ ビットマップを作成しました。しかし、このプロセスは遅いです!恐ろしく遅い!私のコンピューターでは、単純な画像を開くのに約 10 秒かかります。このソリューションには WPF アセンブリへの参照も必要ですが、特に ASP.NET プロジェクトでコードを実行したいので、これは適切ではありません。

画像のバッチ変換を行うプログラムがありますが、要求されたときに画像を動的に変換することをお勧めします。

それで、何か提案はありますか?

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

c# - Graphics.DrawImageを使用するときに、Httpハンドラーからの画像の透明度を維持するにはどうすればよいですか?

その場でトリミングする必要のある一連のGIFがあります。C#でHTTPハンドラーを使用しているので、コードをより適切にカプセル化できます。結果のキャッシュを提供するなどです。

Image現在、オブジェクトを介して既存の画像を新しい画像に描画すると、Graphicsすべての透明度が失われます。

透明性を維持するためにさまざまなテクニックを試しましたが、役に立ちませんでした。

私が試したこと:

  • MakeTransparent (Color)メソッド呼び出しの使用
  • ImageAttriutesの組み合わせで使用するColorMapSetColorKey

安全でない演算子やWin32呼び出しを使い始めたくありません。

何か案は?

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

c# - GDI+ を使用して変更した画像を元のファイルに保存する

ファイルからビットマップ イメージを読み込んでいました。イメージを別のファイルに保存しようとすると、「GDI+ で一般的なエラーが発生しました」というエラーが表示されました。これは、ファイルが画像オブジェクトによってロックされているためだと思います。

わかりましたので、Image.Clone 関数を呼び出してみました。これでもファイルはロックされます。

うーん。次に、FileStream からビットマップ イメージを読み込んで、そのイメージをメモリに読み込んで、GDI+ がファイルをロックしないようにします。これは、メモリ不足の例外をスローする Image.GetThumbnailImage メソッドを使用してサムネイルを生成する必要があることを除いて、うまく機能します。どうやら、この例外を停止するにはストリームを開いたままにしておく必要がありますが、ストリームを開いたままにしておくと、ファイルはロックされたままになります。

だからその方法はダメ。最後に、ファイルのコピーを作成しました。これで、ファイルの 2 つのバージョンができました。1 C# プログラムでロックして操作できます。この別の元のファイルはロックされていないままで、変更を保存できます。これには、変更できないファイルのコピーを操作しているため、変更を保存した後でも変更を元に戻すことができるという利点があります。

確かに、2 つのバージョンのイメージ ファイルを持たなくても、これを達成するためのより良い方法があります。何か案は?

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

c# - GraphicsUnit.Point は PDF にうまく変換されません... GraphicsUnit.World はそうですが、どうすれば Point に変換できますか?

GDI+ を使用してテキスト コンテンツを描画するコードが .Net にいくつかあります。GraphicsUnit.Point を使用してテキストのサイズを変更しました。画面上で素晴らしく機能しており、印刷しても問題ありません。

PDF を生成するシステムの作成を依頼され、ComponentOne の PDF コントロールを入手しました。GDI+ と同様のインターフェイスを備えています。

問題は、フォント サイズが機能しないことです。GraphicsUnit.Point を使用すると、テキストがはるかに小さくなり、テキストの下に空白ができます。GraphicsUnit.World を使用すると、テキストはまだ小さいですが、テキストの下に余分な空白はありません。

GraphicsUnit.World を GraphicsUnit.Point に変換する方法を理解したいです。

すべての助けをいただければ幸いです。

ありがとう

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

image - BYTE* を gdi+ 画像オブジェクトに変換するには?

BYTE* を gdi+ Image オブジェクトに変換したいと考えています。

これどうやってするの?

BYTE* は Dib ポイントのようです。

Image には Image::FromStream() という名前のメソッドがあり、これが役立つ可能性がありますが、BYTE* を IStream オブジェクトに変換する方法についての参照が見つかりません。これどうやってするの?

前もって感謝します!

実際、MS が IStream インターフェイスを提供しているとは信じがたいですが、インターフェイスを実装する c++ MemoryStream クラスは提供していません。

0 投票する
9 に答える
24362 参照

gdi+ - gdi+ Graphics::DrawImage 本当に遅い~~

GDI+ グラフィックを使用して 4000*3000 の画像を画面に描画していますが、非常に遅いです。約300msかかります。10ms未満しか占有しないことを願っています。

// - - - - - - - - - - - - - - - - - - - - - - // この部分約 300 ミリ秒かかります。

//----------------------------------------------

後でビットマップを編集したいので、CachedBitmap を使用できません。

どうすれば改善できますか?それとも何か間違っていますか?

このネイティブ GDI 関数も画像を画面に描画し、わずか 1 ミリ秒かかります。

//------------------------------------------------ --------------

StretchDIBits を使用する場合は、BITMAPINFO を渡す必要がありますが、Gdi+ ビットマップ オブジェクトから BITMAPINFO を取得するにはどうすればよいですか? 私は FreeImage lib で実験を行いました。FreeImageplus オブジェクトを使用して StretchDIBits を呼び出すと、非常に高速に描画されます。しかし今、ビットマップを描画し、ビットマップのビット配列にアルゴリズムを記述する必要があります。ビットマップ オブジェクトがある場合、どうすれば BITMAPINFO を取得できますか? 本当に迷惑です-___________-|

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

gdi+ - GDI +の驚くべきデコード速度、そしてひどい描画速度!


答えてくれてありがとう、実際私は描画に戸惑っていません1024 *768ピクセルは100*100ピクセルより遅いです...それはとても単純なロジックです..私を困惑させたのは、DrawImageの補間アルゴリズムが存在する間は非常に遅いかもしれないということです多くのより良いアルゴリズム、そしてそのデコーダーは特定の解像度でjpgからデコードできるようです、それは本当にクールです、私はいつか検索しますが、これを行うための無料のライブラリは見つかりません...

本当に不思議です!Paintメソッドに次のコードを追加します。c:\1.jpgは5Mjpgファイル、約4000 * 3000

// ------------------------------------------------ --------------

上記は本当に速いです!リアルタイムでも!5m JPGのデコードはそれほど速くないと思います!

// ------------------------------------------------ --------------

上記のコードは本当に遅くなります

// ------------------------------------------------ --------------

Bitmap = Bitmap :: FromFile(L "c:\ 1.jpg"、true);を追加すると //構成に

離れる

OnPaintメソッドでは、コードはまだ少し遅いです~~~

// ------------------------------------------------ ------------------

デコードと比較すると、drawImageプロセスは本当に遅いです...

なぜそしてどのように彼らはそれをしましたか?マイクロソフトは、drawingImageの作成を担当する男性よりも、デコーダーの2倍の給与を担当する男性に支払いましたか?