問題タブ [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.

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

wpf - Windows フォーム UserControl オーバーライドが呼び出されない

UserControl から派生した Windows フォーム コントロールを作成して、WPF アプリに埋め込みます。私は通常、このリンクに記載されている手順に従いました。

そして私のCPPファイルでは:

すべてがコンパイルされて実行されますが、OnPaint メソッドが呼び出されることはありません。

探すべきもののアイデアはありますか?私はC++で多くのことを行ってきましたが、WinFormsとWPFにはかなり慣れていないので、明らかなことかもしれません...

0 投票する
6 に答える
7216 参照

c# - コントロールをC#で常に再描画する必要がある場合に画面のちらつきを避ける方法は?

描画面として使用される単純なパネルがあります。ここでの目標は、特定の状況下で子 ListView の周りに 4 ピクセル幅のアウトラインを描画することです。何かをドラッグできるときにアウトラインを脈動させたいと思います。

ListView の周りに単純な四角形を描画し、タイマー ティック イベント内の四角形の不透明度を更新しています。不透明度が変更されると、境界線が再描画されます。この時点で、絵画をダブル バッファリングしています。また、15 ティックごとにのみ再描画を許可しています (タイマー間隔は 20 ミリ秒です)。このすべての後、描画プロセスはまだ少しちらつきます。これは受け入れられないため、これを回避する方法についてのガイダンスが必要です。

コントロールを頻繁に描画する方法がわかりません。不透明から固体へ、そして再び不透明へとスムーズに移行する必要があります。ティック間隔を十分に下げると (約 300 ~ 500 ミリ秒まで)、点滅は停止しますが、リフレッシュ レートが遅すぎます。

私はどんなアイデアにもオープンです。おそらく、私がこれにアプローチしている方法は単に間違っているか、またはあなたの誰かがすでにグロー効果を作成し、何をすべきかを知っているかもしれません. 事前に助けてくれてありがとう。

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

c# - ユーザー描画コントロールは以前のフォームの背景を使用しています

フォームにいくつかのユーザー描画コントロールがありますが、残念ながら、フォームが表示されると、ユーザー描画コントロールは現在のフォームの背景ではなく、以前のフォームの背景を表示しています。

OnPaint イベントは非常に単純で、OnBackgroundPaint イベントは空です...

このような:

現在の背景を、前のフォームの背景ではなく、表示されている透明度にするにはどうすればよいですか?

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

c# - ユーザーが描画したコントロールでフォームを表示するときに画面のちらつきを避ける方法は?

これで背景透過問題は解決です。現在、フォームを表示するたびに (または再描画する必要がある場合)、多くのちらつきが発生します。ペイント イベントが完了するまで画面を更新できない方法、またはすべてのオブジェクトがペイントされている間に 1/2 秒のちらつきと点滅を停止する方法はありますか?

ANSWER : ダブル バッファリングが最適です。コントロールで既にダブル バッファリングを行っていましたが、フォームで設定する必要があります。ダブルバッファリングは、OnPaint を自分でサブクラス化している場合にのみ機能しました。

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

c++ - MFC、C++ 画面でコントロールを表示および非表示にするときに、ペイントを少し無効にすることはできますか

20個のコントロールがある画面があります。20 個すべてを表示してから、作業に関係のないものだけを非表示にします。

私の問題は、ループ間で画面がペイントされることです。とても醜く見えます。
私はこれが行われたことを知っていますが、私の人生では、そのコードを見つけることができず、そのコードをどのアプリで見たのかさえ覚えていません..

塗料を一時停止する方法を知っている人はいますか?

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

c# - System.Windows.Forms.ComboBox を拡張する

ReadOnly プロパティを使用して System.Windows.Forms.ComboBox コントロールを拡張したいと考えています。これにより、ReadOnly = true の場合に、選択した項目のテキスト (ラベルと同様) が表示されます。(Enabled=false を設定することによって達成される無効な外観は好きではありません)

winformsでこれを行うにはどうすればよいですか? ASP.NET では非常に単純で、Render メソッドをオーバーライドするだけで済みました。ただし、winforms ではそれほど単純ではないようです。

私が収集したものから、私はする必要があります

a) OnPaint メソッドをオーバーライドする

b) this.SetStyle(ControlStyles.UserPaint, true) を呼び出して、OnPaint が呼び出されるようにします。

でも今は、自分ですべての塗装をしなければならないようです。本当?ReadOnly = false の場合、ベース ComboBox にコントロールの描画を処理させることはできませんか? また、どの ControlStyles を使用すればよいですか?

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

c# - FlowLayoutPanel に多数のコントロールを設定し、必要に応じてサムネイルをペイントする

ImageListBoxPicasa が使用するような、多数のサムネイルを表示する一種のコントロールを作成しようとしています。

これは私のデザインです:

4,000 など、FlowLayoutPanel多くのオブジェクトが取り込まれた があります。UserControlそれぞれにイベントUserControlの代理人が割り当てられます。Paintイベントが呼び出されると、Paintサムネイルのメモリ キャッシュがチェックされ、イメージがキャッシュにない場合はディスクから取得されます。

私が解決しようとしている2つの問題があります。

  1. が表示されていなくても、WinForms はPaintイベントをトリガーするようUserControlです。実際に表示されているのは 10 程度のコントロールだけで、残りは表示されていません (FlowLayoutPanel.AutoScrollは に設定されていtrueます)。その結果、すべての画像のサムネイルを取得しようとするため、時間がかかります。

  2. UserControlにオブジェクトを追加するにFlowLayoutPanelは、2 ~ 3 秒ほど時間がかかります。私はそれで暮らすことができますが、それを行うためのより良い方法があるかどうか疑問に思っています:

    /li>
0 投票する
1 に答える
2238 参照

c# - 画像を表示するカスタム コントロール: 画像を内部に移動します

Windows Mobile用のC#アプリを開発しています。ユーザーがポインターで移動する画像を描画するために、 OnPaint をオーバーライドしたカスタム コントロールがあります。私自身の OnPaint メソッドは次のとおりです。

imageToShow画像です。

rectImageToShowは、イベント OnResize で次のように初期化されます

this.Topthis.Leftは、カスタム コントロール内に画像を描画するための topLeft コーナーです。

うまくいくと思いますが、画像を移動すると、すべてのコントロールがきれいになることはありません。私はいつも前の絵の一部を見ています。

私が間違っていることは何ですか?

ありがとうございました!

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

c# - すべての子コントロールに対して OnPaint メソッドが呼び出されています

私は UserControl (WinForms、.net 2.0) を持っています。

私は基本的に UserControl に境界線を描画したいのですが、すべての子コントロールでも四角形が描画されています! すべての子コントロールに対して呼び出す必要があることを読んだことはありませんが、解決策はありますか?

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

c# - DrawStringがC#Winformsで予期しない動作を示すのはなぜですか?

コントロールをC#WinFormsでサブクラス化し、OnPaint()ハンドラーでテキストをカスタム描画しています。私のフォームで次のコードを使用して、フォントをCourierNewに設定します。

コントロール自体では、文字列はに格納されておりrealText、次のコードを使用して画面に描画します。

ランダムなサンプルテキストの結果は次のようになります:http: //img219.imageshack.us/img219/1778/courier.png

ズームインすると、たとえば、最初の「as」間のスペースが2番目の「as」間のスペースとは異なることがわかります(1ピクセルと2ピクセル)。何がこれを引き起こしているのか、またはどうすればそれが起こらないようにすることができるのか、誰かが知っていますか?異なるフォントで描くと、間隔に似たような奇妙さがたくさんありますが、それらはすべて同じ問題の結果であると思います。

あなたが持っているかもしれないどんな考えにも前もって感謝します。