問題タブ [canvas]
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.
apache-flex - Flex でモーダル Popup のサイズを制限しますか?
Canvas 内に含まれるように、モーダル Popup (「モーダル透過色」) のサイズを制限することは可能ですか?
wpf - ユーザーコントロールを使用したキャンバス内の MVVM
基本的に配電ネットワークの単線図デザイナーになりたいMVVM WPFアプリケーションがあります。
変圧器、サーキット ブレーカー、ライン、およびケーブルを含む必要があるキャンバスがあります。
私の大きな問題はデザインです...どうすれば始められますか?
すべての要素の基本クラスである IDesignerItemViewModel の ObservableCollection を含む DesignerView、DesignerViewModel について考えます。しかし、この場合、キャンバスのコンテンツをコレクションにバインドするために ItemsControl を使用する必要がありますが、長所は、要素ごとにユーザーコントロールを作成する必要がないことですが、ほとんどの問題は DataTemplate で解決します (私はそう思います)。 . 各要素ビューモデルは、論理ツリーを維持するリポジトリに永続化されたモデルへのリンクを維持します。
進め方についてのヒント、私は多くのDiagramCanvasの例を見てきましたが、それらはすべて単純な長方形のような単純なアイテムを使用しています...
apache-flex - FlexBipmapdataとスクロールキャンバス
描画領域であるキャンバスがあります。このキャンバスは、水平方向と垂直方向にスクロールできます。
キャンバス全体のスクリーンショットを作成しようとしています。これには、表示されている部分とスクロールされた部分が含まれます。
これは、キャンバスの表示部分とそのスクロールバーのみを表示します:/
そのような問題をどのように解決しますか?この場合、board.width+board.horizontalScrollPositionを使用しても役に立ちません。
どうもありがとう。
apache-flex - Flex Child Canvas で Canvas をサイズ変更し、質問のサイズを変更する
スクロールポリシーがオンになっているキャンバス A があり、A にはスクロールのない一意の子キャンバス B が 1 つあります。
A は、ホワイトボードのようなツールである B のコンテナーです。
Bの幅と高さを設定しないと、Aのサイズに応じてサイズが変更され、Aにスクロールバーがあり、これが適切な動作です。
ただし、要素を動的に追加または移動するたびに B キャンバスのサイズがその場で変更されるように見えるため、少し遅くなります。
幅と高さのパーセントをBに100%に設定することで解決できます。
B は実際には A ビュー (スクロールバー付き) になります。
パーセントの高さと幅を削除すると、予想どおりキャンバス全体になります。
完璧なのは、子の幅が親の幅よりも小さいときに、高さと幅の割合を維持することです。B の幅が A よりも大きくなると、パーセント幅が停止するはずです。
B のどの関数でそのようなコードを処理する必要がありますか? それは updatelist() ですか?
ありがとう !
javascript - HTML / JavaScriptキャンバス要素のテストスイートはありますか?
キャンバスインターフェイスの代替バックエンドを開発しています。私はテストケースを設定し始めました、そしてそれから私は一連のテストによってすでにあるかもしれないことに気づきました、しかしグーグルは来ていません。
javascript - HTMLキャンバス要素にテキストを描画するための最良の方法は何ですか?
残念ながら、canvas要素はテキストを適切に処理しません。たくさんのアプローチがありますが(たとえばhttp://canvaspaint.org/blog/2006/12/rendering-text/を参照)、それらはほとんどハックのように見えます。クロスプラットフォームで、自分のフォントを思い通りに作成するための最も柔軟性のある方法で何ができますか?
wpf - WPF Canvas:Children.Add()がバックグラウンドスレッドにぶら下がっていますか?
...また...
「私はWPFの奥底でどんな悪を目覚めさせたのですか?」
バックグラウンド スレッドで Canvas を作成し、それをビットマップにレンダリングしています。私はこれを本番コードで1年以上問題なく動作させてきました。私は次のことを行います:
- キャンバス オブジェクトを作成する
- 新しい NameScope オブジェクトを作成する
- その NameScope を Canvas に割り当てます
- キャンバスに好きなものを描きます
- キャンバスのサイズで canvas.Measure() を呼び出します
- Canvas の使用可能な矩形で canvas.Arrage() を呼び出します
- canvas.UpdateLayout() を呼び出します
- キャンバスをレンダリングする
描画ステップでは、常に canvas.Children.Add() を呼び出して、UIElements を Canvas に配置しました。これは常に機能しています。
現在、何らかの不可解な理由により、私が取り組んでいるアプリケーションの特定のケースで、canvas.Children.Add() への呼び出しが無期限にハングし、バックグラウンド スレッドがブロックされます。1年以上動作しているコードと、この1つの特定のケースとの間で、私が違うことをしているとは思えません。
canvas.Children.Add() への呼び出しがこのようにハングする理由を誰かが提案できますか?
編集: バックグラウンド スレッドは STA スレッドです (MTA スレッドで WPF を使用して画像を処理できなかったため、バックグラウンド スレッド処理モデルが導入されました)、スレッド アパートメント モデルが原因であってはなりません。
編集 #2 : バックグラウンド スレッドから Dispatcher.BeginInvoke() を試すことを人々が提案している理由は理解していますが、次の 2 つの理由から、そのオプションは好きではありません。
- バックグラウンド スレッドの処理をそのスレッドで同期させたい。私のバックグラウンド スレッドには、他のスレッドがイメージ ジョブを送信するキューがあり、私のバックグラウンド スレッドは、各ジョブに到達したときに各ジョブを処理します。Dispatcher.BeginInvoke() を使用すると、避けたい別の複雑なレイヤーが追加されます。
- 私は今までする必要はありませんでした。このバックグラウンド処理をバックグラウンド スレッドで同期的に行うと、うまくいきました。私は、このコードが機能しない原因となるこの奇妙なエッジ ケースについて、何が異なる可能性があるかを判断しようとしています。うまくいかない場合は、WPF を使用せずにこの処理コードを書き直すことになりますが、これも避けたいと思います。
wpf - WPF サイズ変更可能なキャンバス
Canvas
サイズに応じてコンテンツをスケーリングする a を実装する必要があります。Viewbox
その中のすべてをスケーリングする があることを私は知っています。ただし、一部の要素はサイズが固定されており、スケーリングできないため、使用できません。
また、サイズを親要素にバインドするにはどうすればよいですかCanvas
(たとえば、サイズ変更可能なウィンドウ)。Windows 用の sizeToContent があります。サイズを正確に逆に合わせたいと思います。また、キャンバスはホスト要素のサイズに基づいていくつかの描画を使用します.再描画はどのようにトリガーされ、有効な(または最小)サイズを取得した場合にのみ描画されるようにするにはどうすればよいですか?
resize - SWTキャンバスの場所
SWTの最新の安定バージョンを使用しています。
ToolBar、ScrolledComposite、およびCanvasを含むシェルがあります。Canvasは、ScrolledCompositeのコンテンツとして設定されます(例:scrolledComposite.setContent(canvas))。Canvasは、変更されない特定のサイズ(たとえば、400 x 400)で作成されます。一方、ScrolledCompositeは、使用可能な親シェルのクライアント領域を満たすために絶えず拡大または縮小しています。
親シェルにサイズ変更リスナーをアタッチして、次のことを試みます。a)上記のようにScrolledCompositeを拡大し、b)ScrolledComposite内でキャンバスを水平方向と垂直方向の両方の中央に配置します(コード例については以下を参照)。
これはMacOSXの場合とまったく同じように機能しますが、Windowsではサイズ変更イベントが発生し、新しい場所が適切に計算されますが、最終的にCanvasは0,0に戻ります。もう1つの小さな情報は、ウィンドウのサイズを継続的に変更すると、キャンバスがちらつき、正しい位置に短時間描画されているように見えることです。