問題タブ [ownerdrawn]

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

winforms - 所有者が描画したwinformsコンボボックスアイテムの再描画

背景色が異なるコンボボックスにアイテムを表示する必要があります。また、コンボボックスが所有者によって描画されていない場合と同じように、アイテムが選択されているか(またはマウスがその上にあるか)に応じて、その色を変更したいと思います。

色を変更したアイテムの1つからマウスが外れると、そのアイテムはマウスが上にあるときと同じ色のままになることを除いて、すべて正常に機能しています。以下の例では、アイテム'other'は最初はmyUnselectedBrushで正しく描画されます。マウスが上に移動すると、mySelectedBrushで正しく描画されます。マウスが外れた場合でも、mySelectedBrushで誤って描画されます。myUnselectedBrushで描画されているはずです。色が変更されていないアイテム「何か」では、すべてが正常に機能します。

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

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

c# - .NET フォーム ツリービュー ノードの幅とカスタム描画テキスト (ノードの境界を設定できません)

Windowsフォームにツリービューがあります。最近、テキストをカスタム描画するコードを追加して、配置や太字のテキストなどをいじることができるようにしました。変更を加えたときにノードの境界が更新されないため、水平スクロールバーが混乱して混乱するように見えることを除いて、すべてが素晴らしいです。表示する必要はありません。ツリー上のノードをクリックすると、ノードの境界であると思われるボックスが表示され、小さすぎるため、これが当てはまると推測しています。

OnDrawText メソッドで、DrawTreeNodeEventArgs の Node メンバーの Bounds を変更できるようにしたいのですが、読み取り専用です。

私は今、非常に長い間解決策を探してきましたが、役に立ちませんでした。ツリービュー自体の境界を設定しても、スクロールバーは表示されません。それが違いを生む場合、私は OnDrawText メソッドで TextRenderer.DrawText() を使用しています。

どんな助けでも大歓迎です!

コードを見ると役立つと思う人がいれば、追加します。

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

delphi - AlphaBlend が常に false (キャンバスに描画) を返すのはなぜですか?

Windows alphablend API 呼び出しを使用して、2 つのキャンバスをブレンドしようとしています。最初にメイン キャンバス (宛先) に何かを描画し、次に TBitmap を使用して別のキャンバスをインスタンス化し、その上に描画してから、2 つをブレンドします (SO の回答はこちら)。

ただし、常に false が返されることがわかりました。最初は、ソースと宛先に間違ったハンドルを渡すことに関係があると思っていましたが、わかりません。どうなり得るか?

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

delphi - Alphablend と TransparentBlt

この質問は、SOに関する以前の質問に関連しています。

ソース レイヤーの特定の部分にのみアルファを適用して、2 つのレイヤーを結合したいと考えています。私が試した 1 つの方法は、SourceConstantAlpha を $ff に設定することでした (そして、ソース レイヤーのアルファ チャネルを関数に使用させます)。

この種の作品 - 遅いですが (ScanLines を使用して高速化できると思います)、アルファ チャネルを何に設定すればよいかわかりません。ドキュメントは、計算が次のようであることを示唆しています。

推測でいくつかの異なる値を試してみましたが、最初の質問は次のとおりです。アルファ値を計算するにはどうすればよいですか?

他のいくつかのSOの質問を読んだ後、マスキングをうまく(そして高速に)行うTransparentBlt関数に出くわしましたが、透明性はありません。これら2つの呼び出しを組み合わせる方法はありますか(おそらく3番目のレイヤーを使用して)?

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

c# - CheckComboBoxクラスを設計することはできますが、ファイルの最初のクラスではありません。

チェックボックス付きの所有者描画コンボボックスを持つwinformアプリケーションを開発しています。しかし、ビジュアルスタジオでは次のエラーに直面しています

クラスCheckComboBoxは設計できますが、ファイルの最初のクラスではありません。VisualStudioでは、デザイナーがファイルの最初のクラスを使用する必要があります。ファイルの最初のクラスになるようにクラスコードを移動してください。

そして 、ファイルの最初のクラスになるようにクラスコードを移動する方法は??

私は同じことに関する以前の投稿をチェックしましたが、それを取得していません。

助けてください..事前に感謝します。

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

c# - 以前に選択したアイテムを描画していない所有者が描画したリストボックス

リストボックス内のアイテムの高さを増やしたいのですが、基本的にはそれらを内部的に埋めるためです。それ以外は、デフォルトのリストボックスの動作を変更したくありません。所有者が描画したリストアイテムを実行するためのMSDNの例に従いましたが、問題があります。デフォルトのリストボックスは、アイテムを黒で描画し、選択したアイテムを白で青のハイライトで描画します。これと同じ機能を実現するために、DrawItemイベントハンドラーで次のコードを使用しました。

リストをクリックする場合を除いて、これは正常に機能しているようです。選択したアイテムは青い背景に白いテキストとして表示されますが、前に選択したアイテムは白いままです。選択したアイテムが再描画されているようですが、以前に選択したアイテムは再描画されていません。別のコントロールに移動すると、リストボックスは正常に再描画されます。私は何が欠けていますか?

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

delphi - Delphi TListview OwnerDraw SubItems - デフォルトのフォントを変更します (キャンバスに描画すると太字になります)

TListView で ownerdraw を使用する場合、リストビューの font.style が [] に設定されていても、カスタム描画されたサブアイテムに続くすべてのサブアイテムについて、サブアイテムはデフォルトですべて BOLD フォント スタイルになります。

私が見つけた回避策は、CustomDrawSubItem イベントで設定されたスタイルを強制することです。

([] を使用した単純な呼び出しは、デフォルトのスタイルが [] 以外に設定されていない限り機能しません。これは、SetStyle 呼び出しがスタイルが変更されたと見なさないためです)

ただし、これは余分な処理時間を伴う厄介な修正です。より良い解決策はありますか?

デモ プロジェクト: http://www.mediafire.com/?v8bsdpvpfqy47vn

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

delphi - OwnerDataとOwnerDrawがTrueに設定されているTListViewに間違ったヒントが表示される

私はDelphi2007を使用しています。withがあり、TListViewTrueに設定されていますOwnerData。に設定されます。OwnerDrawViewStylevsReport

私は持っていrecordます。

SubItem2が切り捨てられたときにヒントを表示したいと思います。Windows XPでは、ヒントはまったく表示されません。WindowsVistaおよびWindows7では、マウスをアイテムの上に置くと、完全にオフになっているヒントが表示されます。

ヒントを処理するための特別なコードはありません。OwnerDataOwnerDrawモードに1つあるべきですか?

これが私が得たものの画像です:

リストビュー
(出典:noelshack.com

ヒント付きリストビュー
(出典:noelshack.com

編集: デビッドはなぜOwnerDrawに設定されたのか尋ねましたTrue。2つの理由があります:

  1. このようにして、ユーザーの選択を「禁止」することができます。
  2. に設定OwnerDrawするとFalse、別の問題が発生します。カスタム描画リストビューに白い列区切り文字が表示されるのはなぜですか?を参照してください。

編集2:OnInfoTip TLamaによって提案されたようにイベント を処理すると、テーマのないバルーンヒントWindows Vista&7からの間違ったヒントが表示されます。

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

delphi - CreateParams を動的に変更しますか?

TCustomButton から派生したカスタム ボタン コンポーネントがあります。

オーナードローにするために、次のように CreateParams をオーバーライドしました。

私のボタンは自分の絵などで問題なく動作しますが、オブジェクト インスペクターでブール プロパティを提供して、ボタンを所有者描画するかどうかを指定するために使用できるようにしたいと考えています。

たとえば、プロパティが有効になっている場合、ボタンは所有者描画ボタンとして独自のペイント ルーチンでペイントされます。プロパティがオフになっている場合は、テーマに合わせた Windows ボタン スタイル (通常の TButton など) としてペイントする必要があります。

CreateParams は私のボタンに ownerdawn であるべきだと伝えますが、ボタンが ownerdrawing であるべきかどうかをボタンに伝えるオプションを提供したいと思います。設計時または実行時にコードを介してプロパティを変更することにより、ボタンに所有者描画するかどうかを伝えたいと思います。

これは可能ですか?

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

winforms - 所有者が描画したノードでWinformsTreeview水平スクロールバーを修正するにはどうすればよいですか?

完全に所有者が描画するカスタムwinformsTreeviewを作成しています。太字のテキストノードが描画され、ツリービューの幅を超えると、水平スクロールバーがそれ以上スクロールできないため、テキストが切り取られます。太字のテキストと関係があり、正しい幅がわからないと思います。スクロールバーを修正して、最後までスクロールできるようにする方法はありますか。