問題タブ [java-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.
java - 配列をキャンバスに描画します
配列からキャンバスにオブジェクトを描画しようとしていますが、どうすればよいかわかりません。これには、図形の位置とサイズを含める必要があり、複数の種類の図形が存在します。私がこれまでに持っているコード(それは非効率的/悪いですが)
何か案は?ありがとう。
java - Swingを使用してJavaでグラフィック構造を構築するにはどうすればよいですか?
私のプログラムの構造を手伝ってくれないかと思っていました。私はJavaでゲームを作っていますが、2つのクラスがあります。1クラスは、paintメソッドを使用してJFrameを拡張するグラフィッククラスです。
グラフィッククラスpaint()は、JFrameをパラメータとして使用するさまざまなオブジェクトを呼び出します。クラス内には、paintメソッドと相互作用するMouseListenerとMouseMotionListenerを実装するサブクラスがあります。
キャンバスクラス私は、ボタンやパネルなどを備えたより大きなキャンバスクラスに最初のクラスを埋め込むことを計画していたので、基本的に、より大きなプログラム内のより小さな(サブプログラム)としてクラスを使用します。これは可能ですか/私はこれを正しい方法で行っていますか?キャンバスクラス内でグラフィッククラスを呼び出そうとすると、グラフィックが表示されません。
}どんな助け/ガイダンスもいただければ幸いです。グラフィックプログラミングを正しく考えているかどうかを主に知りたいだけです。
java - JPanelで可動キャンバスを描く
JPanel上で動かせるキャンバスを描きたいです。つまり、ユーザーがキャンバスをクリックしてドラッグすると、新しい位置に移動する必要があります。私は MouseMotionListener を実装しましたが、必要に応じてキャンバスを動かすために内部に何を含めればよいかわかりません。ここに DisplayCanvas クラスがあります:
これが私がそれをテストする方法です。
注意: キャンバスを使用するために JPanel を使用するように勧めないでください。
java - 2点間の線を切り捨てる方法は?
キャンバスに線を引きたい。したがって、ユーザーからの 2 回のクリックを使用して、開始点S
と終了点を定義しますE
。
さらに、線の両側で静的オフセットを減算したいです。たとえば、static int offset = 10;
私の問題は、オフセットを加算または減算する必要がある方向 (北、東、南、西) をどのように知ることができますか?
線が上から下に行く場合は、(0, +10)
始点 S と終点に適用する必要があります(0, -10)
。線が座標空間を斜めに通過すると、さらに複雑になります。
おそらくそれは「単純な」数学的問題かもしれませんが、解決策を見つけるための適切なキーワードがありません。
java - 線が長方形を横切る-交差点を見つける方法は?
キャンバスに長方形を描き、長方形の中心から座標空間のランダムな点まで線を描きます。
ここで、線が長方形の端から始まるように、長方形の内側の長さで線を切り捨てたいと思います。
どうすればこれを行うことができますか?
例
- 長方形は2点で定義できます:
Pstart(1, 3)
、Pend(3, 1)
- 中心点は次のように計算できます。
P(2, 2)
P(2, 2)
次に、からに線を引きQ(10, 2)
ます。
長方形の幅が2であることを知っているので、線を。P(4, 2)
の代わりに開始するように指示できますP(2, 2)
。
ポイントがXY軸の1つに平行でない場合、これはより複雑になります。さらに、長方形の内側の長さは、対角線に対して異なる量になります。
長方形の中心と線の終点を基準にした線点の開始オフセットを計算するにはどうすればよいですか?
おそらく、線が長方形と交差する点を見つけて、線を交差点から開始する必要があります。しかし、どうすればこの点を得ることができますか?
java - 逆座標系の線と長方形の線クリッピングアルゴリズム?
私は次のアルゴリズムを利用しようとしています:http ://www.skytopia.com/project/articles/compsci/clipping.html
しかし、私の特別なケースでは、 2回line
交差するものはありませんが、長方形のから始まり、1回だけ交差します。rectangle
center
上記のアルゴリズムを使用して、キャンバス上の描画の単一の交点を取得したいと思います。
問題:キャンバスには、Yが上に伸びるが、Yが下に伸びる通常の座標空間がありません。
y軸を「ミラーリング」して、キャンバス座標系で機能させるには、何を変更する必要がありますか?
java - キャンバスは2つの数字をポイントとして処理できますか?
などのような数字canvas
を処理することができますか?または、これは内部的に整数に丸められます(はいの場合、どのように?)。double
0.5, 10.4
キャンバス上の要素はピクセルとして表現されていると思うので、私は尋ねています。
また、ピクセルは常にサイズである1x1
ため(間違っている場合は修正してください)、double
キャンバス関数に値を指定するのではなく、より正確に描画できるという利点はありinteger
ますか?
java - ポイントが対角線上にあるかどうかを確認するにはどうすればよいですか?
私はとを持ってcanvas
いlines
ます。オンclick
クリックが私の行にあったかどうかを確認して、それを強調表示します。
とrectangles
を使うだけで簡単なところもあります。しかし、私はもちろん同じテクニックを使うことはできません。もちろん、線は長方形を塗りつぶしません。start
end point
diagonal line
しかし、他にどうすればこれを達成できますか?さらに、細い線はクリックしにくいかもしれないので、クリックが線に十分近い場合はそれもマークされるように、いくつかの「オフセット」も必要です。
おそらく、これを実行したい最初のキーワードではないので、適切なキーワードが欠落しています。お役に立てば幸いです。
java - ポイントが対角線の周りの長方形の内側にあるかどうかを確認するにはどうすればよいですか?
まず第一に、私はaからaまでの距離を計算して、ポイントが線上にあるかどうかを確認できることを知ってpoint
いline
ます。これはoffset
、行のクリック(を使用)を検出するために私が行うことです。
しかしその前に、私はの周りに一般的なチェックを適用したいと思いますdiagonal line
。始点と終点を持つ線自体は、長方形の領域を定義します。
境界チェックを使用して、Point(px, py)
がその内部にあるかどうかを判断できrectangle
ます。
ただし、これは、線が左上から右下に移動する場合にのみ適用されます。別の方向に進む場合は、アルゴリズムを変更する必要があります。線の方向に関係なく、上記の式をどのように使用できますか?
それに応じて方向を尊重する式を取得するにはどうすればよいですか?
java - 削除時に多対多の関係を設計するにはどうすればよいですか?
canvas
2つのオブジェクトで図面を作成しています: Rectangles
、およびLines
長方形を接続しています。各回線は、Rectangle
接続する2秒を認識している必要があります。すべてRectangle
が他のものに接続する複数の線を持つことができますRectangle
。
を削除すると、接続する接続リストからLine
も削除する必要があるため、これは適切な設計ではない可能性があると思います。Line
Rectangle
を削除するときは、長方形に接続されているsRectangle
も削除するLine
必要があります。これは、がないと存在してはならないためです。connections
したがって、削除可能なすべてのを反復処理する必要がRectangle
あり、それぞれに対して/をconnection
取得し、そこで再びリストを取得して参照を削除します。from
to
rectangle
connection
Line
私の問題はそのコードを書くことではありません(私はすでにそれを機能させています)が、私は何度も何度も参照を行っているようです。
これはもっとうまくできるでしょうか?どういうわけか:長方形が削除されると、線からのすべての深い接続が自動的に削除/無効化されますか?Hibernateの多対多のカスケードに似たものはありますか?これはデータベースなしのクライアント側アプリであると想定されているため、Hibernateを使用することはできません。