問題タブ [custom-draw]
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.
java - paintComponent() および paint() を使用した Java カスタム描画
私は Objective-C のバックグラウンドを持ち、iOS および Mac OS プラットフォームで何年も開発を行ってきました。私はカスタム描画のコンセプトが大好きなので、前述のプラットフォームで私が行ったことを再現したいと考えています.
iOS では、カスタム ビューを描画するために呼び出し-drawRect()
てから、その描画の上に他のビジュアル コンポーネントを追加できます。paint()
java swing と awt にandと呼ばれる同等のものがあることを私は知っていpaintComponent()
ます。ただし、描画がどのように行われるかはよくわかりません。スーパーメソッドをいつ呼び出すか (開始または終了?)、およびカスタム描画コンポーネントに他のコンポーネントを追加する方法がわかりません (カスタム描画が上に表示されることもあれば、下に表示されることもあります)。
誰かがこれに光を当てることができますか?
paint()
何をいつ使用するかについてはすでに少し読んでいますが、まだ100%確信が持てませんpaintComponent()
。
c++ - CListCtrl Customdraw 関数で行を無効化またはグレーアウトする
MFC ダイアログに CListCtrl があります。私がしなければならないことは、条件に基づいていくつかのアイテムを無効にして、ユーザーがそれを選択できないようにすることです.今まで色を変更しましたが、それは適切な解決策ではありません. 私のコードは次のようになります。
行を無効にする方法についての参照はまだ見つかりません。
別の問題、無効化部分を管理した後でも、このカスタム描画関数でアイテムに関連するデータを取得する方法は? pLVCD->nmcd.lItemlParam を使用して GetItemData() を呼び出すことができます。助けてください。
c++ - CToolbar カスタマイズ ダイアログでのアイコンのカスタム描画
私は自分のニーズに合わせてCToolbar
クラス(MFCライブラリ)をカスタマイズしようとしています(アンチエイリアスで32ビットアイコンのサポートを有効にしています)。
その目的のために、私は独自のアイコンをペイントする CToolbar が提供するカスタム描画メソッドを使用しています。ユーザーがカスタマイズ ダイアログを開くまで、
アイコンは適切にレンダリングされ、すべて問題ありません。ここで、必要なアイコンを選択して、好きなように配置できます (これは、MFC ツールバーの標準のカスタマイズ ダイアログです)。
問題: カスタマイズ ダイアログで、すべてのボタンに対して同じ画像が描画されます。
私のプロジェクトのコードスニペットは次のとおりです。
メッセージ マップ:
私は多くのデバッグを行い、カスタマイズウィンドウが表示されたときにそれを取得することができました-描画されるアイテム(ボタン)に関連するCustomDrawに送信される情報が失われ、常にゼロインデックスが送信されます。
*pResult = CDRF_SKIPDEFAULT; をコメントアウトすると、システムがインデックスに従ってカスタマイズダイアログでアイコンを描画できる場合(ただし、4ビット深度のみ)-したがって、カスタム描画で重要なことを省略したと思います。
カスタム ドローに関連する MSDN およびその他のソースで考えられるすべての記事を読みましたが、カスタマイズ ウィンドウのアイコンの問題については言及されていません。
誰かが同様の問題に直面している場合は、ヒントを教えてください。前もって感謝します!
winapi - コンボボックスの静的部分の描画方法
スタイル付きのカスタム描画コンボボックスがCBS_DROPDOWNLIST
ありCBS_OWNERDRAWVARIABLE
、ドロップダウンリストのアイテムを正常に描画できますが、ユーザーがアイテムを選択すると、コンボボックスの静的部分 [アイテムを選択した後に表示されたままになり、選択を表示するコンボの部分] に描画されます。次の画像のようにカスタムテキストを付けたい
しかし、私はこのようなコードを見つけました
しかし、私がそれを使用したとき、CtlType == ODT_COMBOBOX
私は上記のコードをデバッグしたとき、それODT_COMBOBOX
は静的部分のために戻り、ドロップダウンリストの項目のためにそれを返しODT_LISTBOX
ます。
この問題を修正する方法を知りたいのですが、ドロップダウン リストで静的な部分または通常のアイテムを描画していることを検出する方法を教えてください。
c++ - カスタム描画のチェックボックスの状態を適切に決定する
紹介と関連情報:
共通のコントロールをテーマにする必要がありますが、テキストの色と透明な背景が異なります。この質問で十分に文書化されている問題に遭遇しました。
処理によってある程度の進歩があり、最初にチェックボックスNM_CUSTOMDRAW
を終了することにしました。
問題:
チェックボックスの状態を判断するのに行き詰まったので、正しいパラメータを渡すことができませんDrawThemeBackground()
。
コードは言葉以上のものを話すので、ここにスニペットがあります:
テキストの色とテキストの背景はWM_CTLCOLORSTATIC
ハンドラーで設定されます。
と に共通のコントロール 6 を含めまし#pragma comment
たInitCommonControlsEx()
。
質問:
現時点で必要なのは、 に適切な状態を渡すことだけDrawThemeBackground
です。誰かがこれで私を助けることができますか?
ありがとうございました。
よろしくお願いします。
c++ - デフォルトの白ではなく透明なテキスト背景を持つ Treeview ノード
カスタム描画を使用して、透明なツリー ビューを作成しようとしています (今のところ、Visual Styles が有効になっている場合をテストしています)。
私のCDDS_PREPAINT
ハンドラーは正常に動作し、ツリーには親の背景ビットマップが適切に描画されています。
を使用して返すCDDS_ITEMPREPAINT
ところにハンドラーを追加しようとしましたが、失敗しました。ノードはデフォルトの白い背景で描画されます。SetBkColor( ((LPNMCUSTOMDRAW)lParam)->hdc, TRANSPARENT );
CDRF_NEWFONT
アイテムのテキストの背景を透明にするにはどうすればよいですか?
ありがとうございました。
よろしくお願いします。
以下は、例示的なコード スニペットです。