問題タブ [bitblt]

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 投票する
1 に答える
1814 参照

c - マウス位置でピクセルの色を取得する最速の方法

実際、ここの「Vodemki」から非常に高速で優れたコードを 取得しました-ピクセルカラーを最速で取得しますか?

しかし、現在のマウスの位置だけをスキャンする必要があるのに、画像全体をスキャンするだけの問題があります

ここにコードがあります -

私は BitBlt に詳しくないので、誰かがそのコードを変更するのを手伝ってくれるなら、私はそれを感謝します

ありがとう!

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

c - directx アプリケーションからの Bitblt

現在のマウス位置からピクセルの色を取得するコードを取得しました。
うまく動作しますが、唯一の問題は、d3d アプリケーションから取得できないことです...
何度か試してみましたが、黒色しか取得できません -

赤: 0
緑: 0
青: 0

ここに私のコードがあります -

ありがとう!

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

c++ - Windows magnifier のコンテンツのブリッティング

私の Windows プログラムは、GetDC を使用してから BitBlt を使用してウィンドウの内容をコピーします。これはほとんどのウィンドウで問題なく機能しますが、拡大鏡ウィンドウでは空白の画面が表示されます。これは、Magnification API を使用して自分で作成した拡大鏡でも、組み込みの Windows 7 拡大鏡でも発生します。

この動作は仕様によるものですか?回避策はありますか?

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

winapi - BitBlt を使用して画像の背景にテキストをスクロールする

私のユーザー コントロールは、スムーズな垂直テキスト スクローラーとして動作することを目的としています。を使用して、(スクロールする) テキストをコントロールのサーフェスに一度だけレンダリングしますTextRenderer.DrawText。次に、タイマーを開始し、各ティックでBitBltクライアント全体を 1 ピクセル上に Bit-Blit ( ) します。コントロールのデバイス コンテキストは、次のように、操作のソースと宛先の両方です。BitBlt

これにより、目的のスクロール効果が正常に実現されますが、コントロールの背景が無地の場合 (例: ) のみですMe.BackColor = Color.Gray

コントロールの background として画像を設定するBitBltと、その上に表示されるテキストとともに背景がスクロールされます。もちろん、スクロールするのはテキストだけで、背景画像は静止したままにしたいです。

次のスレッドを見つけました。これは、背景が無地の均一な色であるTransparentBlt代わりに使用することを提案しています: BitBlt でコピーする方法?BitBlt

このソリューションは、カラフルな背景が使用されている当面のケースには適していないことを示唆していました。

文字自体は単色の単色ですのでご了承ください。

アドバイスをいただければ幸いです。それが問題であれば、私は VB.NET 2005 を使用しています。

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

.net - TransparentBlt がシャープでない画像を生成する

TextRenderer.DrawTextメソッドを使用して、バックカラーの単色の白(Color.White)であったビットマップにテキストを( を使用して)レンダリングしていますFillRectangle。次に、次のように、TransparentBltこのビットマップをカラフルな背景画像を含むメモリ DC に、Color.White And &HFFFFFF透明色の RGB 値 (crTransparent引数) として使用します。

{ 次にBitBlt、組み合わせた画像をコントロールのサーフェスに表示しますが、あまり関係ありません }

レンダリングされたテキストはシャープでクリアですが、TransparentBlt結果はシャープではありません

これは、白い背景の上にレンダリングされたテキストのスナップショットです (これは画像であり、入力されたテキストではありません)。

ここに画像の説明を入力

これは、上の画像をカラフルな背景の上にトランスブリッティングした結果です。

ここに画像の説明を入力

白い(透明になる) ポイントがまだ赤いテキストを囲んでいることに注意してください。

さらに、画像の左側に描かれた白い垂直線と、右上隅に描かれた同様の短い水平線に注目してください。

VB.NET 2005 (別名 VB8) を使用しています。アドバイスをいただければ幸いです。

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

delphi - BitBlt Printer.Canvas を TBitMap に変換すると、白一色で表示されます

BitBlt を使用して、Printer.Canvas をビットマップとしてキャプチャしようとしています。次に、そのビットマップを取得して、ペイントボックスに表示したいと思います。ただし、これを試みると、Bitmap.SetSize に入力した値に比例した白い四角形のみが表示されます。私の印刷物は正しいように見えるので、プリンターのキャンバスが適切に描画されていることはほぼ間違いありません。変数ビットマップを宛先として使用し、ペイントボックスをソースとして使用して、次のコードを試みました(本質的に、単純な長方形とテキストの行をペイントボックスに描画し、ビットマップにビットブリングし、クリアしてから投稿しましたペイントボックスに戻ります)、しかし今は Printer.Canvas.Handle が表示されないソースです。

画面とプリンターの寸法が異なることは承知しておりますので、間違えないように寸法を明記しております。

キャンバスも書き込まれ、キャンバスがビットマップにコピーされ、ペイントボックスに描画できるようになると思います。しかし、私が見るのは白い長方形だけです。ビットマップの寸法を、プリンターのキャンバス全体ではなくペイントボックス全体に設定しています。私がこれを行っているのは、それを正しく理解していれば、ペイント ボックスと同じようにプリンター キャンバスの TopLeft 0,0 と BottomRight 300,300 の間でのみ描画する必要があるためです。これを Paintbox に直接行った場合と同じ結果が期待できます。

どんな助けでも大歓迎です。前もって感謝します。

私が受け取ったコメントを考えると、私がやろうとしていたことは不可能だったようです。私がやりたかったのは、プリンターのキャンバスに書き込み、そのキャンバスの画像データを取得してビットマップに保存することでした。BitBlt は使用できないので、私が望んでいたことを行う方法はありますか? Printer.Canvas を読み取れないと言われたので、そうではないと思います。この時点で、私はそれを回避する方法を見つけましたが、ただ興味があります。

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

c# - BitBlt を使用してスクリーンショットをキャプチャする方法

検索でこの「BitBlt」に時々出くわしましたが、使い方がわかりません。

人々の意見によると、これは Windows が表示する画面をキャプチャする最速の方法のようです。しかし、私はそれを機能させていないので、私自身はそれについて何も言えません。

私が少なくとも管理している唯一のことは、この方法を試してみることです:

私はそれを使用すると思いますか?(rc.size = 特定のウィンドウのサイズ) 悲しいことに、何もしません。黒い画像が表示されます。ただし、SourceCopy を使用すると機能しますが、それが通常の方法です。

現在、BltBit を使用するためにいくつかのコードを置き換えようとしていますが、うまく機能していません。

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

winapi - Win32 C++ プログラミングで Windows Media Player を含む画面領域をコピーするために BitBlt() を実行するにはどうすればよいですか?

を介して画面領域をキャプチャするプログラムがありますBitBlt。今日テストしていたところ、画面領域に Windows Media Player の一部が含まれている場合、それらの部分がグレーで表示されることがわかりました。領域の残りの部分は、ビットマップに正常にコピーされます。

画面の一部をキャプチャするために使用するコード フラグメントを次に示します。

このコード フラグメントは、スクリーン ポイント (100, 100) から始まるサイズ 800x600 のスクリーン領域をキャプチャします。

この領域のどこかにムービーを再生するメディア プレーヤーを配置すると、出力ビットマップに入ると、ムービー プレーヤーのコンテンツではなく灰色の領域になります。

BitBlt映画プレーヤーが含まれている場合、画面領域にまったく可能かどうか疑問に思いますか? Media Player の画面へのコンテンツの表示が他の Windows アプリケーションとは異なるためでしょうか?

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

c# - スクリーンショット分析 C# によるゲームのハッキングの検出

ゲームのウォールハックを検出するコードを書き込もうとしています。基本的に、Windows エアロ透明ウィンドウを作成するいくつかのハックが存在し、ハックをこの外部ウィンドウに描画するため、ゲーム自体のスクリーンショットを撮っても検出できません。

現時点での私のアプローチは - 1. ゲーム ウィンドウのスクリーンショットを撮ります。2. 同じ座標の Windows デスクトップのスクリーンショットを撮ります。3. 画像解析を実行してスクリーンショット 1 とスクリーンショット 2 を比較し、違いがあるかどうかを確認します。

私の問題は、スクリーンショット 1 とスクリーンショット 2 が同時に実行されないため、2 つのスクリーンショットの間に新しいゲーム フレームが描画され、画像を比較したときに誤検知が発生することです。

スクリーンショットがまったく同時に発生するように調整する方法があるかどうか知りたいですか? または、スクリーンショットが完了するまで、画面が新しいフレームを描画するのを何らかの方法で停止しますか?

これは、スクリーンショットを撮るために使用するコードです。2 つの作業項目をキューに入れて、2 つのスクリーンショットを並行して撮ろうとしたことにも注意してください。ただし、これでもスクリーンショットがまったく同時に発生するわけではありません。スクリーンショットが終了するまで、グラフィックカードから画面への更新を停止する方法はあるのでしょうか? または、これを行うことができる他の方法はありますか?