問題タブ [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.
c# - C#.NET .. Paint イベント ハンドラの外で描画するのは悪い習慣ですか?
質問の意味を明確にするために..NETフレームワークを使用してC#でゲームを作成するときに、独自のDrawScene()メソッドを実装し、ゲームのグラフィックを再描画したいときはいつでも呼び出すことに慣れました(基本的には、次のように、ゲームが移動または形状/状態が変更されました)。
そうすることで、Paint イベント ハンドラーで次のことを行うだけです。
たとえば、プレーヤーが何らかの動きをした後に再描画したい場合も、同じ方法で DrawScene() を呼び出すだけです。
それを行うこととこのようにすることの間に重大な違いはありますか(ほとんどの人がフォローしていることに気づきました):
これが多くのことを話している場合は申し訳ありませんが、私の質問について明確にしたかっただけです..
したがって、上記の 2 つのケースが (グラフィックスの観点から) まったく同じ方法で描画を行い、最初のケースのように通常の実装を維持しても害がない場合.
c# - パネルにスクロールを追加する方法
基本的に、複数の譜表を作成するために、複数のビットマップをそれ自体に描画するパネル クラスの拡張機能を作成しました。パネルに垂直スクロール バーを追加しようとしましたが、うまくいきません。私のペイント手順はこれに似ています
c# - リアルタイムでトラックバーからの値を使用して線を再描画する方法は?
この問題を解決するのを手伝ってもらえないかと思っていました。
私のプログラムでは、ペイント イベントを使用して、「タレット」として機能する線を描画する必要があります。このタレットを「発射」する角度を選択するには、トラックバーを使用する必要があります。私の問題は、トラックバーの値が変更されるたびに「タレット」ラインが再描画されるようにコーディングする方法がわからないことです。線をリアルタイムで描画できる Refresh() を使用してみましたが、フォームが白黒がちらつき、選択したものとは異なる角度で線を再描画する原因になりました。
どんな助けでも大歓迎です。ありがとう!
以下は、Visual Basic 2010 で実行されている以下のコードのフォームのスクリーンショットです。
c# - C# - 「ペイント」を使用したパネルでの描画
画面ポリゴン (パネルに描画) を表示する必要があるクラスのプロジェクトに取り組んでいますが、ここで、Paint イベントを使用する必要があることを読んでいますが、それを機能させることはできません (少し前に C# を学び始めました)。
画面に描画するためにこのようなことをしていましたが、Paint メソッドでこれを行うことは可能でしょうか? (それはメソッドまたはイベントと呼ばれますか?私はここで本当に迷っています)。
ありがとう!
c# - どのようにアプリが onpaint でクラッシュする可能性がありますか? c#
ページに入った後、refresh メソッドを使用してコントロールを再描画します。また、タスク マネージャーを調べると、最初は 40.000K のメモリが表示され、別のページに入ると 50.000 などになりますが、100-130 以上に達した後、いくつかのページの後に再び 100 になります。
写真で確認できる最初の 100 個のコントロールのみを作成します。次のページに移動しようとすると、ゲーム名、画像などの値だけが更新されます。onPaint イベントを使用してコントロールを描画し、IDisposable コントロールを using()..ページ番号はラベルです..そしてすべてのゲーム コントロールはfloatLayout.Game コントロールでは、画像がある場所にあります。手動でペイントイベントを呼び出すのではなく、更新または無効化メソッドを呼び出すだけです。そして、2 番目のコードでは、e.graphics で nullReference 例外が発生することがあります。e.graphics が null になることがあります.....なぜこれが起こっているのかわかりません。
いつなのかはわかりませんが、しばらくすると、毎回違ったものになります。プログラムを手動でクラッシュさせる方法がわかりません。これは突然起こります
そしてここに私の2つのコード:
私のゲーム コントロール ペイント:
私のスターコントロールペイント:
c++ - QGraphicsProxyWidget内のQGraphicsSceneペイントイベント
OpenCV を使用して Web カメラからストリーミングしています。キャプチャされた各フレーム (タイプはcv::Mat
) は、カスタム シグナルを介してノードベースのスロットに転送されますQGraphicsScene
。実際に表示する必要がある単一のタイプのノードがcv::Mat
あり、残りはデータを処理するためのものであるため、データをデータに変換し、それを使用してその表面に描画するビューアーウィジェットを作成しました。cv::Mat
QImage
paintEvent()
ウィジェット自体のコードは次のとおりです。
qcvn_node_viewer.hpp
qcvn_node_viewer.cpp
上のスクリーンショットからわかるように、は、シーン内でノードを選択/移動するために使用するとともににQWidget
埋め込まれています。QGraphicsScene
QGraphicsProxyWidget
QGraphicsRectItem
使用QPainter
するよりも使用した方が効率的と考えられ、キャプチャーされ変換されたフレームにQLabel
設定されます。私が知る限り、QPixmap
内でOpenGLビューポートを使用することはオプションではありません。シーン内のペイント イベントを処理すると、 およびQGraphicsScene
内のローカル イベントも処理されるようです。ビューアーがその表面にペイントするフレームは、シーンのペイント イベント ハンドラーが呼び出された場合にのみ変更されます (ノードの一部をホバーしたり、ノードを移動したりなど)。QGraphicsItem
QGraphicsProxyWidget
これを修正する方法はありますか?私はこのQLabel+QPixmap
オプションを選択しようとしています (同じ問題または別の問題が発生しないかどうかはわかりませんが) が、まず、現在の方法を維持するためにできることは何もないことを確認したいと思います。物事を行うこと。
編集:QLabel
さて、ウィジェットのペイントイベントの代わりにビューアーを使用するように変更しました。それは魅力のように機能します。ローカルペイントイベントの使用方法を知りたいので、質問はまだ開いています。
c# - winformアプリケーションでペイントイベントを使用して、親チェックボックスにフラットチェックボックスを描画する方法は?
ユーザーがディスプレイの DPI を大きくしても、winform アプリケーションのチェック ボックスのサイズが自動的に大きくなりません。チェック ボックスの横に表示されるテキストのサイズのみが大きくなります。この問題を解決するために、親の上にカスタム チェック ボックスを描画しようとしました。次のコマンドを使用しています。
ControlPaint.DrawCheckBox(e.Graphics, rc,chkBx.Checked ? ButtonState.Checked : ButtonState.Normal);
問題は、これが 3D ボックスを作成することです。しかし、フラットなチェック ボックスを描画したいのですが、どうすればこれを実現できますか?