問題タブ [paint]

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 に答える
3294 参照

delphi - Delphi / GDI +:デバイスコンテキストはいつ作成/破棄されますか?

通常、DelphiでGDI +を使用すると、TPaintBoxを使用してOnPaintイベント中にペイントできます。

このパラダイムの問題は、毎回グラフィックスオブジェクトを破棄することは無駄であり、パフォーマンスが低いことです。さらに、GDI +には、永続的なGraphicsオブジェクトがある場合にのみ使用できるいくつかの構成があります。

もちろん、問題はいつそのGraphicsオブジェクトを作成できるかということです。ハンドルがいつ使用可能になり、いつ無効になるかを知る必要があります。Graphicsオブジェクトを作成および破棄できるように、この情報が必要です。


ソリューションの試みNº1

作成の問題は、本当に必要なときに作成することで解決できます。最初にペイントサイクルが呼び出されたときは、次のようになります。

ただし、デバイスコンテキストが無効になる時期を知る必要があるため、FGraphcisオブジェクトを破棄して、次に必要になったときに再作成できるようにすることができます。何らかの理由でTPaintBoxのデバイスコンテキストが再作成された場合、次にOnPaintが呼び出されたときに、無効なデバイスコンテキストを利用します。

TPaintBoxのデバイスコンテキストハンドルがいつ作成、破棄、または再作成されるかを知るために、Delphiで意図されているメカニズムは何ですか?

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

listbox - C#リストボックスペイントイベント

線形グラデーションブラシを使用してリストボックスの背景をペイントすることはできますか?もしそうなら、どうすればそれを行うためにペイントイベントを上げることができますか?

ありがとう。

0 投票する
5 に答える
26434 参照

java - paint()/ paintComponent()が呼び出されないのはなぜですか?

過去2日間、私はJavaがグラフィックスを処理する方法を理解しようとしましたが、それだけで惨めに失敗しました。私の主な問題は、paint()(または新しいpaintComponent())がいつどのように呼び出されるかを正確に理解することです。

物事がいつ作成されるかを確認するために作成した次のコードでは、自分で手動で呼び出しを追加するか、JFrame.paintAll()/ JFrame.paintComponents()を呼び出さない限り、paintComponent()が呼び出されることはありません。

paint()メソッドの名前をpaintComponent()に変更しました。これにより、(repaint()でも)呼び出されないという問題が解決することを期待していますが、運がありません。

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

c++ - Qtペインティングクラスで少し助けが必要です

ペイントプログラム(マウスの長押しが検出された場所でペイント)を作成しようとしていますが、QtQPainterの使用に問題があります。私は彼らのウェブサイトのドキュメントを読みましたが、私はまだちょっと迷っています。彼らのウェブサイトにないチュートリアルへのリンクはいいでしょう、あるいは私がQtでこれを達成する方法を私に説明するかもしれません。私が何とかできたのは、ウィジェットにドットをペイントすることだけです。

0 投票する
5 に答える
2216 参照

winapi - 部分的に遮られたウィンドウを再描画するために送信される Windows メッセージは何ですか?

私は WM_PAINT がウィンドウにそれ自体を完全に再描画する必要があることを伝えていることを知っていますが、明らかにそれは部分的に覆われているときに送信されるメッセージではなく、その前にあったウィンドウはもはや邪魔にならず、再描画する必要があります汚れた部分。この場合、どのメッセージが送信されるか知っている人はいますか?

編集:問題が見つかりました:

この問題には、 SDLレンダリング サーフェスを Delphi フォームに埋め込むために作成した Delphi コントロールが関係していました。SDL には、別のウィンドウの HWND でレンダラーを構築するための API があり、それを「外部ウィンドウ」としてマークします。

SDL は通常、WM_PAINT内部で処理するため、SDL の WindowProc にコードを追加して、外部ウィンドウの場合は外部 WindowProc にメッセージを転送する必要がありました。それは時々機能していましたが、ウィンドウのデータ構造から外部ウィンドウフラグを削除する不具合があったことが判明したため、メッセージをアプリに渡す代わりに飲み込んでいました. それを修正したら、WM_PAINT常にメッセージを受け取り始めました。

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

java - Java2Dグラフィックスの長方形

キャンバスにグラフデータ構造を描画できるJavaアプレットを作成しようとしています。これを行うには、ノードを作成する場所をクリックし、ノードをクリックしてそれらを接続します。paint()問題は、メソッドを正しく動作させることができないことです。mousePressed(MouseEvent e)を使用して、メソッド内のグラフ(およびキャンバス上の正方形)に新しいノードを追加します。

ウィンドウのサイズを変更すると、塗りつぶされた長方形がすべて消えるまで、すべてが正常に機能します。paintメソッドを空のメソッドにオーバーライドしましたが、同じことが起こります。ユーザーがマウスを使用して操作するまで、どの長方形が存在するかわからないため、paint()内にfillRectコマンドを追加できません。

g.fillRect()マウスリスナーメソッド内で使用して、それらを固定するにはどうすればよいですか?

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

paint - ズーム可能なタイムラインでティックをペイントする

特定のタイムステップで目盛りをペイントするタイムラインを作成しています。

そのため、利用可能な幅に応じて、できるだけ多くの目盛りをペイントしたいと考えています。しかし、それらは近づきすぎてはいけません。それらは、少なくとも特定のピクセル数だけ離れている必要があります。

そのため、ズームインすると目盛りは明らかに離れて移動しますが、特定のしきい値では、制限により新しい目盛りがペイントできるようになるとすぐに、古い目盛りの間に新しい目盛りが表示されます。

では、ズームと幅に応じて目盛り間のスペースを見つけるにはどうすればよいですか?

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

delphi - 復元時に Delphi フォームが黒いフラッシュをペイントする

Delphi アプリケーションを最小化して復元すると、Vista/Win7 で (再) ペイントする前に、ウィンドウの内容が恐ろしく黒くなります。これは、Delphi 2007 IDE でも見られます。オブジェクト インスペクタ、プロジェクト マネージャ、[メッセージ] ウィンドウ (エディタの内容ではない) も、復元時に黒く点滅します。

通常のちらつきのないペイント手法はどれも違いを生むようには見えず、DoubleBuffered、WS_EX_COMPOSITED、WM_ERASEBKGND など、さらに悪化させるものもあります。

ほとんどの Microsoft アプリケーションは、この動作を示しません。これは Delphi の Windows フォームの実装に問題がありますか? 誰かが回避策を知っていますか?

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

c# - C#/Windows フォーム: フォームのペイント コードが実行されていない

数時間前に似たような具体的ではない質問を投稿しましたが、状況が変わりました。グラフィックを変換し、フォームの左上にあるパネルに表示するプログラムに取り組んでいます。以前は問題なくペイントできていましたが、現在はそうではなく、元に戻したり、古いバージョンをロードしたりすることもできません。以前は、アプリはメニューのイベントやペイントにも反応しませんでした。私は新しいプロジェクトを開始し、それを起動して実行しました。メニューが機能し、ボタンなどを持ち込みました。ただし、パネルの軸とグリッド線はまだ描画されません。メイン フォームのペイント ハンドラーと作業を行う必要がある splitContainer2_Panel1_Paint ハンドラーの両方にブレークポイントを配置しましたが、ここのコードは実行されていません。100ミリ秒ごとにアクティブでフォーム全体を無効にするタイマーがあります。では、なぜペイント イベント ハンドラが呼び出されないのでしょうか。ヘルプ?

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

c# - フォームの描画を妨げるDataGridViewCellFormattingイベント

C#、Winforms、および.Net3.5を使用しています

私のフォームにはカスタムがありますDataGridView(ここに示すように、セルフォーマットイベント中のちらつきを防ぐためにダブルバッファリングされています)。データベース検索を実行するとき、結果のデータセットをにバインドしますdatagridview

CellFormattingデータに応じて、行を特定の色でペイントするイベントを処理します。

私のDataGridViewコード:

私のCellFormattingコード:

CellFormattingを処理すると、フォーム全体のPaintイベントがオフになっているように見えることを除いて、すべてがうまく機能します。テキストボックスでカーソルの点滅が止まり、フォームのメニューストリップは次のようになります。

メニューバーの画像

上は検索前、下は検索後です。メニュー項目がある場所にマウスを合わせるまでメニューバーは再描画されません。その後、マウスをメニューバーの外に移動しても、最後に強調表示される項目はそのままになります。フォームを移動すると再描画されるようですが、問題は残ります。

resultsGridView.CellFormattingdatagridviewコードの行をコメントアウトすると、問題が完全に修正されます。

セルを間違ってペイントしていますか、それとも他に処理する必要があるものがありますか?