問題タブ [onpaint]
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.
.net - VB.net のフォーム ペイント イベント
奇妙な問題: メイン フォームの Form_Paint イベントでいくつかのコードを起動するアプリケーションがあります。私のマシンでは正常に動作しますが、他のマシンではまったく動作しません。
別のマシンでコードをデバッグしようとしましたが、Form_Paint イベントがまったくトリガーされません。
winapi - Win32 WM_PAINT と子ウィンドウ
子ウィンドウ内に描画するには?
CreateWindow(WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN)
メインウィンドウをいくつかWndProc
(なしで)作成する必要があると思いましたWM_PAINT
。その上で、に反応する別WM_CREATE
のウィンドウを作成します。しかし、別のハンドラーが無限ループに入っているようです。私は何を間違っていますか?CreateWindow(WS_CHILD | WS_CLIPCHILDREN)
WndProc2
WM_PAINT
アドバイスや例はありませんか?
PS: WS_CLIPCHILDREN はこれに影響を与えないようで、どちらもWndProc
デフォルトでDefWindowProc
コード:
c# - C#、OnPaint のオーバーライド: ダブル バッファーを使用したアルファ透明度
C#を使用した.Net Compact Framework 2.0 SP2を使用して、 Windows Mobile 5.0以降のアプリケーションを開発しています。
フォーム全体をアルファ透明度で塗りつぶすビットマップを描画するカスタム メッセージ ボックスの OnPaint メソッドと、半透明の背景にボタンとメッセージを含むグラデーション ボックスをオーバーライドしています。
私はそれをテストしていますが、とても遅いので、ダブルバッファを使用します。グラデーション ボックスとテストを描画するためにダブル バッファーを使用できますが、アルファ透明度の背景ビットマップでダブル バッファーを使用すると、アルファ透明度が描画されません。したがって、グラデーションボックスとメッセージとボタンを使用したダブルバッファのみを行います。背景透明ビットマップは、e.Graphics に直接描画されます。
e.Graphics をビットマップに保存して、すべての作業を行い、OnPaint メソッドの描画を e.Graphics に描画して、以前に保存したこのビットマップを終了できるかどうか疑問に思っています。
これは私のコードです:
bmpOffscreen:ダブル バッファのビットマップ。
たぶん、フォームのスナップショップを bmpOffscreen に取得し、その上に半透明の背景、グラデーション ボックス、およびテキストを描画できます。
要約: ダブル バッファでアルファ ブレンドを使用したい。
何かアドバイス?
c# - OnPaintの効率的な使用
Visual Studio .Netでプログラミングしており、C#を使用しています。
アナログ-デジタルコンバーター(ADC)から取得した値に基づいて波を描画する独自のコントロールを作成しています。入ってくるポイントを取得し、それらをXポイントとYポイントに変換して、コントロールでグラフを適切に描画します。
OnPaintメソッド内に、すべてのポイントを通過し、現在のポイントと次のポイントの間でDrawLineメソッドを呼び出すループがあります。
ただし、これらのグラフの一部には8192ポイントがあり、システムには実際に同時に表示したい9つのADCがあるため、これは非常に非効率的です。ページが再描画されるたびに、すべてのグラフが再描画されるまでにほぼ1秒かかります(特にデバッグ中)。
その上、私はあなたがより良いビューを得るために波をズームインしてパンすることを可能にする機能を持っています(グーグルマップがするように機能します)そして9つの波すべてが一緒にズームインしてパンします。
私はmousewheelとmousemoveでinvalidateを呼び出しているので、この機能はすべて非常に「ぎくしゃく」しています。基本的にはすべて機能しますが、思ったほどスムーズではありません。
データから事前に描画されたオブジェクトを作成し、描画領域に画像の拡張および翻訳されたバージョンを描画する方法があるかどうか疑問に思いました。
それが私を正しい方向に向けているだけであっても、どんな助けでも大歓迎です。
c# - Winforms Invalidate が OnPaint を起動しない
Windows フォームの場所を異なる速度でスムーズにアニメーション化する方法は?
しかし、何らかの理由で、私の this.Invalidate() 呼び出しは OnPaint イベントを起動しません。これを可能にするためにフォームに必要な構成はありますか?
編集:
独自のメッセージ ループを使用してバックグラウンド ワーカーで実行されるため、スレッド化が必要です。コードは次のとおりです。
形 :
.net - GDI+での複数の順序付けられた変換/スケール変換
Windowsフォームアプリケーションのグラフィックスコンテキストでプロットしているグラフィックスオブジェクトがいくつかあります。パスがレンダリングされるui要素との相互作用があり、ユーザーはズームポイントのパン、ズーム、および原点の設定を行うことができます。私が持っている質問は、次のようにグラフィックスオブジェクトに一連の変換操作を設定することは可能ですか?
[1]変換変換を適用します(スケール変換の原点にパスをシフトします)[2]スケール変換を適用します[3]変換変換を適用します(パスを正しい位置に戻します)
個々の変換操作タイプ(変換、スケールなど)しか注文できないようです。そのため、2つの変換変換は正しいポイント(スケール操作のいずれかの側)に適用されません。これを行う方法はありますか?あるいは、スケール変換の原点を設定することは可能ですか?
ネストされたグラフィックコンテナをいじりましたが、役に立たなかったようです。
ありがとう、
マックス
text - wxpython:透明な背景のStaticText
背景のないサブクラスを作ろうとしwx.StaticText
ています。背景のアルファコンポーネントをSetBackgroundColor
で設定したり、運が悪かったさまざまなオブジェクトで使用SetTransparent
したりしましたが、それは私が初心者だからかもしれません:)
とにかく、私はサブクラス化して、背景がペイントされないようにメソッドwx.StaticText
を変更し、この新しいメソッドにバインドすることになりました。OnPaint
EVT_PAINT
ほとんどの場合(アプリケーションが起動したとき、または別のウィンドウに隠された後に再描画されたとき)は非常にうまく機能しSetLabel
ますが、のサブクラスのインスタンスでメソッドを使用するときはいつでも、呼び出されるStaticText
のは私のメソッドではありません。OnPaint
ウィンドウを更新すると、デフォルトの灰色の背景になります。
以下は「小さな」実用的な例です。最初に背景のないテキストを表示し、1.5秒待ってから、テキストのラベルを変更します。これにより、背景もペイントされます(自家製のペイントメソッドとは呼ばれません)。
私は何かが足りないと思いますが、wxpythonについての私の理解は何を理解するのに十分ではありません。誰かが私を教えてくれれば幸いです:)そしてwxpythonで背景のないテキストを作成するもっと簡単な方法があれば、それも素晴らしいでしょう。
前もって感謝します!
windows - 枠だけでウィンドウを描画する
ウィンドウの境界線だけを表示するアプリケーション ウィンドウを作成するにはどうすればよいですか。ただし、ウィンドウ自体の内容は表示したくありません。つまり、デスクトップの残りの部分または他のウィンドウを、ウィンドウの領域全体で表示したいということです。透明は使用しないでください。境界線を引くだけです。
メッセージ WM_ERASEBKGND および WM_PAINT を検出し、これらのケースで内容を強制的にペイントしないように何もしないようなものだと思いますが、試してみましたが、ウィンドウはまだ白い背景を描画しています。
どうすれば入手できますか?
c# - System.Label にテキストを正確に配置する Graphics DrawString
VS2008 でLabelコントロールのOnPaintメソッドをオーバーライドしました。
これは機能しますが、テキストを垂直方向と水平方向の両方で中央揃えにする方法を知りたいです。メソッドについては聞いたことがMeasureString()
ありますが、私の「テキスト」には改ページが含まれる可能性があるため、問題が複雑になります。
誰かがこれを行う方法を教えてもらえますか?