問題タブ [nsbezierpath]
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.
cocoa - NSBezierPath で 1 ピクセルの線を取得するには?
カスタムコントロールを開発しています。要件の 1 つは、線を引くことです。これは機能しますが、1 ピクセル幅の線が実際には 1 ピクセル幅の線のように見えないことに気付きました。幅が 2 ~ 3 ピクセルのように見えます。これは、1 ピクセルのダッシュと 2 ピクセルのギャップで破線を描くと非常に明確になります。1 ピクセルのダッシュは、実際には点ではなく小さな線のように見えます。
Cocoa Drawing のドキュメントを読んだことがありますが、Apple は setLineWidth メソッドについて言及していますが、線幅を 1.0 より小さい値に変更すると、線がぼやけて見えるだけで、細くはなりません。
だから、私の線の見た目に影響を与えている何かが他にあるのではないかと思います.
何か案は?
objective-c - NSBezierPath のユニークな行
私は簡単な描画アプリを作成してNSBezierPath
おり、線を描画するために使用しています。サブクラス化してNSView
います。ユーザーが次のパスの色とサイズを変更できるようにするメソッドを作成する必要があります(ユーザーがボタンを押すと、次にパスを描画すると指定された色/サイズになります)が、今試してみるとそうすることで、既存のすべてのパスの色とサイズが変更されます。どうすればそれらを「個別」にすることができますか?これが私のコードです:
したがって、個別の NSBezierPath パスを作成する必要があります。
cocoa - -setClip メソッドを使用して、カスタム ビューの挿入 NSShadow を再描画
この質問の答えに関連して、私は奇妙な問題を抱えています:
Inset NSShadow と Inset Stroke を描画する
このコードをカスタム ビューの drawRect メソッドで使用します。私はまさにこれを持っています:
マルチライン ラベル (カスタム ビューの兄弟または子) を追加すると問題が発生します。
プログラム ウィンドウがフォーカスを失って戻ってくると、内側の影/ストロークが暗くなります。影が重なっているように見えます。私のウィンドウにこのカスタムビューしかない場合、それはうまくいくので、それは奇妙です。
行にコメントすると
影はもう重ねられませんが、丸みを帯びたコーナーの望ましい効果は得られません (NSBox と同様)。
マルチラインラベルの代わりにプッシュボタンで何が起こるか試してみました.ウィンドウのフォーカスを失ったり取得したりすることで問題はありませんが、ボタンをクリックすると影が重なってしまいます.
問題はここと似ていますが、Java ではなく Cocoa にあります。
ご協力いただきありがとうございます!
cocoa - NSView での NSBezierPath ポイント アニメーション
NSBezierPath を使用して描画されるカスタム コントロールを Cocoa で作成しました。状態が変化したときに形状を変更したいと考えています (未使用状態 = 尖った「ここを見る」エッジ、使用状態 = 標準コントロール エッジ)。
ウェブ上にある「NSBezierPath」と「アニメーション」のすべての言及を調べたように感じますが、運がありません。
いくつかの NSTimer を分解して独自のタイミングとパス ポイント コントロールを作成する前に、Core Animation などを使用してこれが可能かどうか知っている人はいますか?
objective-c - NSBezierパスに沿って任意のポイントを取得する
私が書いているプログラムの場合、オブジェクトが移動しなければならない仮想線(直線ではない)をトレースできる必要があります。線を引くために使用することを考えていNSBezierPath
ましたが、線に沿って点を取得する方法が見つかりません。オブジェクトを線に沿って移動できるようにする必要があります。
誰かがに沿ってポイントを見つける方法を提案できますNSBezierPath
か?それが不可能な場合、誰かが上記を行う方法を提案できますか?
objective-c - NSBezierPathで描画されたものを消去するにはどうすればよいですか?
NSBezierPathを使用してパスを作成し、[パスフィル]を実行してビューに描画しました。私の質問は、私が描いたものをどのように削除するのですか?
考えられる解決策の1つは、背景色で[パス塗りつぶし]を再度使用することですが、単純な背景色の代わりに背景画像がある場合、これは機能しません。それで、誰かが何かアイデアを持っていますか?
objective-c - NSBezierPathグラフ
NSBezierPathを含むNSViewの描画を最適化する方法がわかりません。
私が何を意味するのか説明してみましょう。約4万点の折れ線グラフを描きたいと思います。私はすべてのポイントを持っており、次のコードを使用して完全グラフを一度描くのは簡単です。
これで、グラフ全体が実際の座標でNSBezierPath形式で保存され、ストロークできるようになりました。しかし、ここで、一度に1つのポイントをできるだけ速く追加してグラフを表示したいとします。
毎回ポイントのセット全体を描きたくありません。可能であれば、完全なグラフを使用して、ごく一部だけを視覚化したいと思います。同じフレームに最初の1000ポイントだけをレンダリングしたいとします。グラフの最初の部分だけを正しい境界でレンダリングする可能性(境界を変更し、最終的にはパスを何らかの方法でスケーリングする)はありますか?
境界を変更するとスケールが変化し、線幅の問題を修正できないため、結果を取得できませんでした。
objective-c - NSTableView UITableView グループのような丸みを帯びた角
角が丸い NSTableView を作成しようとしています (iOS のGrouped
テーブル ビューのスタイルによく似ています)。しかし、これは非常に困難であることが証明されています。
私は使用しようとしましたCALayers
:
NSView
サブクラスでは機能しますが、 NSTableView
orでは機能しませんNSScrollView
。
また、をオーバーライドdrawRect:
して bezierPaths を使用しようとしました。
NSView
このメソッドはs でテストしていませんが、s ではそのままでは機能しませんNSTableView
。
以前、StackOverflow でいくつかの「重複した」質問を見たことがありますが、満足のいく解決策を提供できませんでした。
NSTableView の丸みを帯びた角には「正しい」答えが 1 つあります。この質問は私に s を試すように促しましたNSBezierPath
が、私が言ったように、私はその方法を機能させることができないようです.
NSTableView の丸みを帯びた角は NSScrollView のサブクラス化を示唆していますが、それは同様にCALayers
.
どんな提案でも大歓迎です。自分のためだけでなく、後世のためにも明確な答えを出したい。
cocoa - CALayer を使用してビューのレンダリングを高速化できますか?
頻繁に変更されるコンテンツと、あまり変更されないコンテンツを持つカスタム NSView オブジェクトを作成しています。結局のところ、変更頻度の低い部分ほど、描画に最も時間がかかります。私がやりたいのは、これら 2 つの部分を異なるレイヤーにレンダリングして、どちらか一方を個別に更新できるようにすることです。これにより、ユーザーのユーザー インターフェイスが遅くなるのを防ぐことができます。
どうすればこれを行うことができますか?私はこの種のことについて多くの優れたチュートリアルを見つけたことがなく、CALayer での NSBezierPaths のレンダリングについて話しているものもありません。アイデアはありますか?
cocoa - NSBezierPath:クリップパスを反転する方法は?
NSBezierPath
丸みを帯びた画像を作成し、グラフィックスコンテキストのクリッピング領域に追加することで、カスタムビューの中央に丸みを帯びた画像を描画しています。これはうまく機能していますが、ビューの背景(丸みを帯びた中央の画像の外側の領域)を描画するパフォーマンスを向上させることができるかどうか疑問に思っていますが、このクリップを反転して背景描画(NSGradient
塗りつぶし)を実行します。
クリップパスを反転する方法を誰かが提案できますか?