問題タブ [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 - テキストを描画するときにSWTテーブルはどのテキストマージンを使用しますか?
比較的簡単な質問がありましたが、答える場所がどこにも見つかりません。
アプリケーションでは、セルにテキストのみを表示する単純なSWTテーブルウィジェットを使用しています。インクリメンタルサーチ機能があり、一致する場合はすべてのセルのテキストスニペットを強調表示したいと思います。
したがって、「a」と入力するときは、すべての「a」を強調表示する必要があります。
これを取得するためにSWT.EraseItem
、背景の描画を妨げるリスナーを追加します。現在のセルのテキストに検索文字列が含まれている場合は、位置を検索し、-easyを使用してテキスト内の相対的なx座標を計算しますevent.gc.stringExtent
。
それで、私はオカレンスの「後ろ」に長方形を描くだけです。
さて、これには欠陥があります。テーブルは余白なしでテキストを描画しないので、私のx座標は実際には一致しません-それは数ピクセルだけわずかにずれています!でもいくつ?テーブル自体の図面が使用するセルのテキスト余白はどこで取得できますか?全く分からない。何も見つかりません。
ボーナスの質問:テーブルの描画メソッドもテキストを短縮し、セルに収まらない場合は「...」を追加します。うーん。私のオカレンスファインダーはTableItemのテキストを取得するため、「...」によって消費されているために実際には表示されないオカレンスにもマークを付けようとします。EraseItem描画ハンドラー内の「実際の」テキストではなく、短縮されたテキストを取得するにはどうすればよいですか?
android - Androidのカスタムビューによる無限スクロール
予定を週単位のビューで表示するカレンダーアプリケーションをプログラミングしています。
ビューのonDraw()でカスタム描画してグラフィックを実装しました。
グラフィックには、固定部分(タイムバー)とカレンダーの相対部分(日、予定)が含まれています。
カレンダーを水平スクロールするための最良の方法は何ですか?
ユーザーは過去および将来「無制限」にスクロールできるはずなので、最大幅が固定されていないため、ScrollViewを使用できません。
週のビューに必要な日数が2日多い画像(左に1つ、右に1つ)に相対的な部分を描画し、ビューキャンバスで計算されたオフセットを使用してビットマップを描画することを考えました。
オフセットが1日を超えるとすぐに、ビットマップを再描画する必要がありました。
よりエレガントな解決策を知っている人はいますか?
アンドレアスよろしく
android - カスタム ビューの一部のみを描画する
を含むカスタムビューがRelativeLayout
ありますListView
(両方とも親と一致するように設定されています-幅と高さ)。リストの一番上に、View
下の図に示すよう
なものがあります。
ビューの他のすべての部分が透明になるのに対し、描画される唯一の部分は私の四角形View
(灰色でマークされている)です。
これを行う方法はありますか?私はすでにそのメソッドを拡張RelativeLayout
してオーバーライドしようとしましonDraw()
たが、特定の領域 (灰色でマーク) だけを描画することはできませんでした。
delphi - TListView - マウスが項目の上にあるとき、その青い四角形を描画しません。どのように?
マウスが TListView アイテムの上に移動すると、青いアウトラインが表示されます (図を参照)。どうすれば削除できますか?
私が知っている唯一の方法は、すべてのアイテムの描画を手動で行うことです.しかし、おそらくもっと簡単な方法はありますか? HotTrack=False を試してみましたが、役に立ちません :(
header - MS ヘッダー コントロールは、カスタム描画項目の境界線を引き続き描画します
VB6 でカスタム グリッド コントロールを開発しています (従来の VB を使用する必要があります - 申し訳ありません :)。これには、CreateWindowEx への対応する WinAPI 呼び出しを使用して作成された ComCtl の標準 OS MS ヘッダー コントロールに基づくカスタム ヘッダーがあります。ヘッダー アイテムはオーナー描画 (HDF_OWNERDRAW フラグ) であり、完全に最初から描画する必要がありますが、MS ヘッダーは依然として、すべてのアイテムの周りにこの奇妙な 3D 境界線を描画します。
これは、WM_PAINT が処理されるときに WindowProc の標準機能の一部として発生するようです。ただし、WM_PAINT をまったく抑制することはできません。この場合、WM_DRAWITEM メッセージが送信されず、ヘッダー項目を描画する場所がないためです。
サブクラス化された API ヘッダーのこの標準的な 3D 境界線の描画を取り除くにはどうすればよいですか?
android - 指でパスに沿ってオブジェクトを移動する
Androidで説明されていることに従って、パスに沿ってオブジェクトを移動します円のパスを描き、それに沿ってオブジェクトをアニメーション化できました
次に、同じパスに沿って同じオブジェクトを移動する必要がありますが、指を使用します。基本的にはドラッグ アンド ドロップのようなものですが、パスをガイドとして使用する必要があります。
どうすればそのようなことができますか?
前もって感謝します、
visual-c++ - CustomDraw は PrePaint drawstage のままです
64 ビット マシンで NM_CUSTOMDRAW メッセージを処理するときに、いくつかの問題に直面しています。CHeaderCtrl 派生ヘッダー (PreSubclassWindow 経由でリンク) を持つ CListCtrl 派生クラスがあります。
CHeader 派生クラスでは、いくつかのカスタム ペイントを行います。これは 32 ビット ビルドで機能します。しかし、64 ビット版をビルドすると、ドローステージは CDDS_PREPAINT のままです。
そのため、この問題に関するヘルプを得るためにここに投稿しています。結果値の組み合わせ、OnCustomDraw での drawstage 処理を試しましたが、それらはすべてまだ CDDS_PREPAINT drawstage しか受け取りません。
ここに、OnCustomDraw の現在のテストコードがあります。
このヘッダー ctrl の唯一の目的は、デフォルトの描画の上に描画することなので、そこには多くのコードはありません。CListCtrl 派生クラスの描画は、特別なことは何もしません。CListCtrl が OnPaint メッセージを処理できるようにします。CListCtrl 派生クラスには、OnCustomDraw セクションが含まれています。しかし、32ビットで動作するので、そこで問題を検索する必要があるとは思えませんが、選択肢がないので言及します...
同様の問題(64ビットまたはドローステージのみが残っている)を含む投稿をいくつか見つけましたが、どれもうまくいきませんでした。これらの解決策の 1 つは NMCUSTOMDRAW 構造体の誤った定義でしたが、私のものは MFC バージョンであり、64 ビットに対する苦情は見つかりませんでした。もう 1 つの問題は、コンポーネントが配置された場所が原因で結果が処理されなかったことですが、32 ビットでも動作しないはずです。他のソリューションは、OnCustomDraw メッセージと結果の処理に固有のものですが、それは私のテストコードでは問題ないようです...
敬具、
ケビン
c++ - Winapi : CustomDraw を使用して TreeView の色を変更する
現在、TreeView アイテムの背景色を変更しようとしています。したがって、このメッセージを使用してアイテムを作成しています。
さらに、次のようなカスタム描画メッセージを処理しています:
これはうまく機能し、色を好きなように設定できますが、メッセージを送信するときに色をパラメーターとして渡す方法はまだ見つかりません。結局のところ、定数またはランダムな色しか割り当てられない場合、カスタム描画は役に立ちません。
助けてくれてありがとう!
delphi - listview の oncustomdraw 関数で brush.color を設定するとアプリケーションがクラッシュする
数十の項目と 24 を超える列を持つ動的に作成されたリストビュー コンポーネントがいくつかあります。
onCustomdrawXXX
イベントまたはリストビューのイベントでいくつかのキャンバス プロパティ (brush.color など) を設定するonAdvancedCustomDrawXXX
と、アプリケーションが不安定になり、クラッシュします。
最初に、いくつかの視覚的な不具合が発生し始め (ヘッダーが描画されない、リストビューにアーティファクトが表示される)、アプリが応答しなくなり、クラッシュします。
設計時に作成されたリストビューでも問題を再現できました。
私はこれを読みましたが、コントロールを所有したくありません。
誰でもこれで私を助けてくれますか?
更新:コード
ビジュアルは上に示されています (コントロールが応答しなくなり、コントロールにアーティファクトが表示されます)、クラッシュします (YourApp.exe が標準の Windows エラー メッセージの動作を停止しました)。
2回目の更新
まだ問題を再現できませんでしたが、取り組んでいます。
私は(気が進まないにもかかわらず)コントロールを描画することになりましたが、これは問題なく動作します。
私はまだこの問題を調査し、解決策を思いついたらお知らせします。
delphi - node.text だけでなく、ツリービュー ノードに追加のテキストを表示する
Delphi に TTreeView があり、ノードは 3 つのレベルにあります。
ノード データを使用して、ノード テキスト以外の別のラベルを格納します。
ExtraNodeLabel
ノードテキストの前に
これを表示したい OnAdvancedCustomDrawItem イベントがあります。私はこれを達成したい:
- 青いテキストは追加のラベルです。
- 強調表示された項目: 最初の 2 つの単語も追加のラベルです
私がこれまでに得たものは、これです:
問題:
DrawText
/を使用すると、何らかの理由で異なるスタイルのテキストを描画できませんdrawTextW
(Unicode データのために drawtextW が必要です)- もう 1 つの問題は、点線のフォーカス四角形の外側はクリックできないことです。
解決する必要があるもの:
DrawText
/を使用して異なるスタイルでテキストを描画するにはどうすればよいですかDrawtextW
- テキスト全体をクリック可能にするにはどうすればよいですか?
コード: