問題タブ [paintevent]

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

c++ - C++/Qt : ペイントされている QImage の変更 (のサイズ)

必要以上の詳細を記載して申し訳ありません。Canvas次のようなクラスがあります。

Canvas::paintEvent(QPaintEvent *)関数は次のように実装されます。

したがって、クラスCanvasDelegateは次のようになります。

CanvasDelegate のコンストラクタは次のとおりです。

これがこれまでで最高のデザインかどうかはわかりませんが、これは私の質問ではありません (ただし、コメントは大歓迎です)。Canvas私の問題は、ウィンドウ ( ) のサイズが変更されたときに何が起こるかです。私のコードは次のようになります。

問題は、プログラムを実行するとクラッシュすることです。painter->eraseRect(0, 0, sizeX, sizeY);で が呼び出されたときにセグメンテーション違反が発生しているようvoid CanvasDelegate::rescale(int sizeX, int sizeY)です。理由がわかりません。問題が何であるかわかりません。

以前のバージョンでは、次のように記述していました (必要以上に複雑に思えます)。

しかし、それは機能しません: Qt エラーQPaintDevice: Cannot destroy paint device that is being Paint が発生します。と を削除するdelete oldImage;delete oldPainter;、すべて正常に動作しますが、それは嫌なメモリ リークですよね。

私が書いたことが機能しない理由と、私が何をする必要があるかを誰かが理解していますか?

ご清聴ありがとうございました。

0 投票する
0 に答える
409 参照

macos - Qt 5.3.2 / OSX は、paintEvent でネイティブ CGContext 描画を使用できない / ちらつき

私の人生では、Qt 5 の paintEvent でネイティブ描画を使用できません。

Rectangle 全体を特定の色 (RGB 240,120,60) で塗りつぶす簡単な例を作成しました。開始すると(もちろん、Macでは10.9を使用しました)、ウィンドウは白と目的の「オレンジ」色の間で何度かちらつき、その後は白のままです。私の絵が永続的でない理由が分かりますか? Qt4 で非常によく似た描画方法がうまく機能しています。

これが私のサンプルです:

ネイティブペインター.pro:

main.cpp:

ネイティブペインター.h:

ネイティブペインター.cpp:

コンパイルして自分で確認してみてください。何かわかりますか?

ご挨拶と感謝、

ニルス

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

c++ - Qt paintEvent がクラッシュする

ウィジェットに簡単なボードを描画しようとしています。

これを自動化しようとすると、paintEvent がクラッシュします。内部の for ループが原因だと思いますよね?他の方法でそれをペイントするにはどうすればよいですか?

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

c# - ちらつきを避けるための C# の描画フレームワーク

私は C# を学び始めたばかりで、ちらつきを避けるためにペイントする際の適切な方法についてアドバイスを求めたいと思います。

ダブルバッファリングやオンにするなど、ここで説明した方法を使用しましたWS_EX_COMPOSITEDが、私にとってうまくいく方法は次のとおりです。

の呼び出しPaintEventHandler:

を使用しPaintEventArgsて描画します。

そして、PaintEventHandlerは の を介してトリガーRefresh()されTimerます。

ただし、私の懸念は、この描画方法ではPaintEventHandler、フォームにある for every コントロールが必要になることです。

そのため、これを達成するためのよりエレガントな方法があるかどうかを尋ねたいと思います。

ありがとう!

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

qt - Qt5: mouseMoveEvent の update() の後に paintEvent が呼び出されない

QAbstractScrollArea + カスタム QWidget 派生ウィジェットを「the」ウィジェットとして使用しています (sizeHint() がオーバーライドされています)。アプリケーションは、mouseMove 中に QWidget コンテンツを常に更新する必要があります (一種のドラッグですが、正確ではありません。オブジェクト間に線を描画するための描画ツールであるため、マウス カーソルを変更する必要があります + 線をオンザフライで描画する必要があります)。 .

アプリケーションは正常に動作します。たとえば、コンテンツを適切にレンダリングしたり、スクロールバーを表示したり、scrollContentsBy 中にビューポートを手動で更新したりできます。

ただし、mouseMoveEvent で update() (または repaint()) 呼び出しを手動で起動しても、paintEvent は「ドラッグ」プロセスが終了した後にのみ呼び出されます。たとえば、mouseReleaseEvent が起動されます。

そして、なぜこれが起こるのか私にはわかりません。明らかに、更新を mouseMoveEvent 内で直接行うと、QPainter によって拒否されます (mouseMoveEvent 内で QPainter をインスタンス化できないため、それを行おうとすると Qt は「paintEngine を呼び出さないようにする必要があります」を削除します)。

どんな提案も歓迎します:)ありがとう、

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

vb.net - ボタンを押すと線を引く

「リアルタイム」で描画プログラムを作りたい。フォームに 2 つのテキスト ボックスと 1 つのボタンがあります。テキスト ボックスに 2 つの値を入力し、ボタンを押して線を描画します。

b_Click(bはボタン)から呼び出そうとしましたが、とパラメータForm_paintをどうすればよいかわかりません。sendere

これを行う方法はありますか?

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

python - wxPython の Mac OSX 10.8.5 でのペイント イベントの問題

私のプログラムでは、イメージ (ビットマップ) を wxScrolledWindow にロードしています。画像の上にグリッドを描画しようとしていますが、うまくいきません。私の仕事は、このプログラムを最初に開発された Windows から移植し、Mac でも動作させることですが、予想以上に大変な作業です。

このコードは Windows 7 では問題なく動作しますが、Mac で実行すると次のエラーが発生します。

self.staticBitmap は wxStaticBitmap であり、self.wxBitmap はまったく同じ画像です。私の推測では、おそらく GraphicsContext と関係があるのでしょうか? ここで同様の質問がありました: wxpython で PaintEvent を送信する方法ですが、これは役に立ちませんでした。彼らが self. Refresh() で提案したことをしましたが、同じエラーが発生しました。Windows では機能するのに、Mac では機能しないのはなぜですか? 画像に描画が行われていないようです。

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

java - Java repaint() が paintComponent() を呼び出さない

Java について学習するための非常に単純な弾幕ゲームを作成しようとして、repaint() が paintComponent() を呼び出していないという障害に遭遇しました。

これがプログラム全体です。今のところ、作成した画像を 1 秒あたり 50 回、JFrame にある JPanel に描画するだけです。

ブレークポイントと println メソッドを使ってデバッグした後、正しい画像が読み取られていること、gameTimerAction のタイマーが毎秒 50 回呼び出されていること、repaint() が paintComponent() をまったく呼び出していないことを確認できます。

私はJavaプログラミングに少し慣れていないので、単純なものが欠けているだけかもしれません。

編集: gamePanel を GraphicsPanel オブジェクトに変更することで問題が解決しました。残念ながら、これは私のはるかに大規模な pong プロジェクト (このプロジェクトの欠陥のある描画ロジックが本質的にコピーされたもの) が奇跡的にしか機能せず、特定のコードを追加すると不安定になる可能性があることも意味します。

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

c++ - ウィジェットの paintEvent でのクリッピング

Qt でのクリッピングに問題があります。大きな長方形の配列をペイントするウィジェットがあります。時々いくつかの長方形を変更するだけなので、ウィジェットのごく一部 (これらの長方形のみ) のみをペイントし、ペイント領域をこれらの部分にクリップします。

長方形が前のisNew()描画以降に新しい色を受け取った場合、関数は true です。

私は何を間違っていますか?関数を使用すると、プログラムの実行がさらに遅くなりsetClipRegion(...)ます。