問題タブ [drawrect]

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.

0 投票する
2 に答える
471 参照

iphone - drawRectメソッドで描画されたときにビューにアクセスできますか?

tableViewCellのコンテンツビューを作成するとき、必要なのはテキストを配置することだけだったので、drawRect:withFont、drawAtPoint...などをdrawRect内で使用しました。結局のところ、描画されるテキストの一部はクリック可能なURLである必要があります。そこで、UIWebViewを作成して、drawRectに挿入することにしました。すべてがうまくレイアウトされているようですが、問題はUIWebViewとの相互作用が発生していないことです。インタラクションを有効にしてみましたが、機能しませんでした。drawRectを使用して現在のグラフィックスコンテキストに描画しているので、知りたいのですが、サブビューをユーザーと対話させるためにできることはありますか?
UITableViewCellクラス内で使用するコードの一部を次に示します。

私が言ったように、ビューはうまく描画されますが、外部からのwebViewとの相互作用はありません。URLはHTMLに埋め込まれ、クリック可能である必要があります。そうではない。私はそれを別のビューで動作させましたが、そのビューにビューを配置しました。何か案は?

0 投票する
1 に答える
1624 参照

ios - UIView サブクラスの drawRect で描画されたコンポーネントのテキストを更新する

インターフェイスビルダーで作成した UIView サブクラスに設定されたサブクラスを持つ UIView があります。それらを保持する UIView クラス内のラベルを更新したいと思います。drawRect で描画されたラベルのテキストを更新できないようです。UIView サブクラス内で変更する必要がある要素を描画するためのオプションは何ですか?

0 投票する
1 に答える
855 参照

android - 複数の画面解像度、密度で画面全体を埋める

すべての Android 携帯電話、すべての解像度、すべての画面密度で画面全体を埋める四角形を描きたいと思います。これが正しいことを願っています。Android は初めてなので、単純にこのように書けば十分だと思いました。現時点では、解像度が 1024x1024 ピクセルを超える Android デバイスは存在しないためです。

ただし、一部のデバイスでは、この Rectangle が画面全体に表示されないようです。奇妙で説明できないのは、これが常に発生するわけではなく、ある時点で発生するということです... とにかく、コードに問題があるようですので、次のように変更したいと思います、しかし、今では metrics.widthPixels と metrics.heightPixels が私の問題を解決することを確信しています:

これが正しいかどうか、このコードがすべての画面をカバーし、四角形が画面全体を占めるかどうかを知りたいです。もちろん、このアプローチでは、画面の向きにも注意する必要があります。画面が横向きの場合、値がそれらの間で交換されるように見えるからです。

0 投票する
1 に答える
291 参照

iphone - UIView drawRectの偶数および奇数のバッファー?

こんにちは(以前の貴重な助けに感謝します)。

新しい問題:物理シミュレーションを作成していますが、おもちゃのバージョンで問題が発生しました。NSStimer timerメソッドを呼び出すたびに、iPhone/タッチスクリーンにランダムな長方形を描画するだけtickです。これらの呼び出しに。でインデックスを付けましたint frameCount。目に見えるのは、2セットの画像が徐々に蓄積されていることです。1セットは偶数フレーム用で、もう1セットは奇数フレーム用です。frameCountわずかに異なる位置で偶数と奇数のカウントを使用して画面に描画することにより、これを検証しました。したがって、フレーム内の画像と同期してカウントが前後に点滅しているのがわかります。省略コードは以下のとおりです。私はあなたが持っているかもしれないどんな提案にも感謝します。私には、2つのオフスクリーンバッファが必要であるように思われます。しかし、私はここで暗闇の中にいます:-)そして、これが真実であるとしても、私はそれらをマージする方法、または一方を他方にコピーする方法を知りません。

// UIViewのサブクラスであるFooBarの実装に関連する部分:

0 投票する
4 に答える
563 参照

iphone - モデルによって新たに計算された画像をdrawRectリクエスト/rcvするにはどうすればよいですか?

Core Graphicsとジェスチャレコグナイザー(OpenGLやタッチイベントではない)を使用するiphone/ipadで最初のアプリを実行しています。アプリ、ビュー、コントローラーはIBを使用してセットアップされました。これは、ViewController内の単なるビューです。CGコンテキストに描画するためのCG呼び出しを追加しました。ジェスチャはビューに追加されますが、ビューコントローラで処理されます。ビューコントローラは、アクセサを使用して、ビューに描画されるものを決定する変数を変更します。計算(つまりモデル)はビューに埋め込まれています。このアプリは非常にうまく機能しますが、メールで送信したり、描画したものを保存したりするなどの機能を追加したいと思います。(私は他のグラフィックスコンテキストが必要になることを知っています)。

従来の知識では、MVCパラダイムを使用する必要があると言われています。これは、モデルをビューからそれ自体のオブジェクトに分解することを意味します。そこで、コードをリファクタリングしました。モデルのNSObjectを手動で追加しました。これには、データと必要なメソッドが適切に含まれています。コンパイルエラーや警告はありません。

ここで、ビューのdrawRectがトリガーされたときに、コントローラーを介してモデルから更新された画像を取得したいと思います。画像が返されると予想される重要な場所で、NULLが返されます。オブジェクト参照が正しくない可能性がありますが、混乱して霧を切り抜けることができず、真空で作業しているので、あなたの助けを求めています。読んでくれてありがとう。

まとめと質問

View Controllerには、モデルに渡すことができる現在のパラメーターが常にあります。モデルは、これらのパラメーターを指定してビットマップ画像を計算できます。私はそれだけのダウンがあるとかなり確信しています。

私の質問は(さまざまな言い方をすれば):

モデルからビューに画像を取得するための最良の方法は何ですか(コントローラーを介して:^)ビューは、要求を開始するためにビューコントローラーにメッセージをどのように送信する必要がありますか?

モデルはどのようにして画像をコントローラーに返すことができますか?CGContextRefを、推奨するチェーンに戻すだけだと思います。

私について:私はOOP、Objective-C、Xcode、およびIBを初めて使用します。私はスタンフォード大学の講義のほとんどを数回見、ゴールドスタインのダミーの本を研究し、アップルのドキュメントを精査しました。初心者がこれらの情報源から適切なレベルの回答を収集することは困難です。もっと「経験」が必要です。私はとても環境に配慮しているので、ビューのインターフェイス定義に「myViewController * viewController」を含める以外に、ビューコントローラーを参照する方法すらわかりません。私はここStackoverflowで同様の質問に対する答えをグーグルで読んでいます。私は何も適切なものを見つけられなかったと信じることができません。私は、実用的な原則が私のガイドとして役立つことを望んでいます。

お知らせ下さい。

これは、十分に回答されなかった、view-instance-drawrectのモデルデータへの参照に似ています。

0 投票する
3 に答える
1966 参照

iphone - 実行ループ/drawRectでの不可思議な「プログレッシブスローイング」問題

これが本当の謎です。

複雑な画像を画面外に描画する従来のプロセス(CGLayer)を実行していて、描画中に画面上で画像を断続的に更新していると想像してください。

ご存知のとおり、これを行う方法は次のとおりです。バックグラウンドで大規模な描画プロセスを実行し、必要に応じてフォアグラウンドでsetNeedsDisplaysを呼び出して、画像を更新します。これは簡単で、2行のコードで実現されます。

ただし、これを行うと、不思議な問題が発生します。各描画サイクルにかかる時間が毎回長くなり、使用できなくなります。さらに、時間は不規則に変化する可能性があります。

これは既知のiOSバグですか、それとも?誰かがこれを見たことがありますか?

これは非常に些細で非常に理解しやすいアプリで、問題をデモします。

http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html

以下の出力例。

なぜこれが起こるのか誰かが知っていますか?OSからは非常に奇妙な振る舞いです。

後で...驚くべき回避策がFELZによって理解されました。Felzは、ラウンドごとに1回CGLayerをコピーします。これにより、奇妙な動作が完全に停止します。

しかし、一体何が起こっているのかについての明確な理解はまだありません。したがって、文字通り、奇妙な問題が発生するときに使用されている時間はどこですか?

そして、これが出力の長い例です...

次のような「二重に奇妙な」結果が得られる場合があることに注意してください。これは「通常の」奇妙な動作を示しています。時間は毎回増加します。ただし、場合によっては、数ラウンドの間、時間が「信じられないほど速い」に低下し、その後戻ってくることがあります。変なハァッ?さらに、シミュレーターで実行している場合は、Mac上の無関係なアプリをクリックしてすばやく前に進み、「さらに奇妙な」結果を得ることができます。

Felzは完璧な答えを出しましたが、実際のメカニズムはまだ謎です。

0 投票する
2 に答える
1680 参照

android - Android で複数行のテキストを表示する

私はグラフィカルな Android プロジェクトを持っています。ユーザー インターフェイス機能を提供するための主なトリックは、drawrect と drawtext を使用して、画面上にラベル付きの四角形を描画することです。次に、タッチ イベントをキャプチャし、それらが四角形で発生するかどうかを確認します。発生すると、ボタンができます。

最もエレガントな方法ではないかもしれませんが、魅力的に機能しているようです。しかし、すべてのラベルが 1 行できれいに表示されるわけではなく、2 行で書きたいと思っています。2 つの別々の行を書き、テキストを適切な間隔で中央に配置するように手作業で調整することもできると思いますが、可能であればそれは避けたいと思います。

Android で、テキスト ラベルを分割して 1 つのステップで書き出す簡単な方法はありますか?

ありがとう、R.

0 投票する
1 に答える
764 参照

delphi - pmXORペンを使用したTCanvas.Rectangle()が「時々」しか機能しないのはなぜですか?

次のAnimateRects()メソッドを開発して、Windowsデスクトップにアニメーションの長方形を描画しました。モーダルフォームの表示をアニメーション化するために使用し、グリッドセルから「成長」したように見せます。

フォームが表示される直前に、bExpandパラメーター=Trueを指定してメソッドを1回呼び出します。次に、ユーザーがフォームを閉じると、もう一度呼び出しますが、bExpand = Falseを使用して、フォームがグリッドセルに「折りたたまれている」ことを示します。

問題はbExpand=Falseの場合です...ループの最初の反復では、 Rectangle(r)の最初の呼び出しで期待どおりに長方形が描画されますが、Rectangle(r)の2番目の呼び出しが呼び出されなかったかのようになります- -最初の長方形がXORされることはありません。したがって、「折りたたむ」長方形のシーケンスが描画された後、最初の長方形が画面上のアーティファクトとして残ることになります。

私が間違っていることについて何か考えはありますか?

0 投票する
2 に答える
3519 参照

objective-c - Objective-C:-(void)drawRect内で「ifelse」ステートメントを使用してチェックボックスの状態を取得しますか?

ユーザーがチェックボックスをクリックすると、ボックスに画像が表示されるインターフェイスを設計しようとしていNSViewます。12個のチェックボックスがあり、チェックボックスのさまざまな組み合わせをすべて処理するためのifelseステートメントのレイアウトが...頭の中にあります。宣言内にifelseステートメントを配置しました-(void)drawRect:(NSRect)rectが、機能していないようです。(エラーは発生しません)。プログラムが最初に開始されたときに、ifelseステートメントが正しく評価されることがわかりました。しかし、「」を含むアクションをアクティブにするチェックボックスをクリックするとsetNeedsDisplay:、「ifelse」ステートメントは再評価されません。(もちろん、それは私がどのように機能するかを正確に理解していないことを意味しますsetNeedsDisplay:。笑)

NSLog何が起こっているのかを確認するために、さまざまな場所にいくつかのステートメントを配置しました。-(void)drawRect宣言に、が機能していることを確認するための1つがありsetNeedsDisplay:ます。そしてそうだった。チェックボックスをクリックするたびに、setNeedsDisplayがアクティブになります。また、「if else」ステートメントの2つの場所に次のように配置NSLogします。最初の部分に1つ:

そして、「ifelse」条件の最初のセットの最後に1つあります。

プログラムが最初にロードされたときに、「最初のノートの選択なし」がコンソールに表示されると思います。そして、そうです。「cNatural」チェックボックスをアクティブにすると、代わりにコンソールに「NoFirstNoteSelection」文字列が表示されます。チェックボックスの状態変化を登録していないようです。

Interface Builderでチェックボックスが正しく接続されていることを確認するために、チェックボックスが切り替えられたときにアクティブになるこのコード行を作成しました:(このコードにはsetNeedsDisplay:)も含まれています

これらはすべてコンソールで期待どおりに表示されますが、-(void)drawRect一部の「ifelse」ステートメントは登録されていないようです。

私はいたるところを見てきましたが、これに対する解決策を見つけることができません。どんな助けでも大歓迎です。

これが私の.mファイルのかなり長いコードです:

0 投票する
2 に答える
1651 参照

xcode - テキストフィールドを使用して値を入力するXcodedrawRectのヘルプ

私は現在、XCodeで棒グラフを作成しようとしています。私はCPGraphとその周辺のすべてのものを試しましたが、それらはすべて古く、XCode 4のヘルプが必要です。私はこれに完全に慣れていないので、あなたの助けが必要です。

これが私のコードです:

-(void)drawRect:(CGRect)rect

{{

}

「value」のポイント値の1つを変更したことに注意してください。私が行ったことは、UITextFieldを作成することであり、UITextFieldに500のように記述できるようにし、バーが自動的に調整されるようにしたいです。現在、NSLogは、アプリをビルドする前にTextFieldに手動で数値を入力した場合でも、値は0に等しいと教えてくれます。私は3日間検索してきましたが、xcodeのobjective-cについてほとんど何も知らないと言っているので、見つけたものはすべてエラーになり、不完全です。また、検索中に、このタイプの行は、彼に言わないとリアルタイムで更新されないことに気づきました。それが私の問題の一部であるなら、私もそれを手伝いたいです。私のコードの詳細が必要な場合は、教えてください。誰かが私を助けてくれたら本当にありがたいです。

これが私の.hです:

@interface draw2D:UIView

{{

}

@property(非アトミック、保持)IBOutlet UITextField * textField;

@終わり