2011-06-29 3 views
2

CSSでは、境界線、余白、パディング、および塗りつぶしが矩形の全幅と高さにどのように寄与するかを定義するbox modelがあります。 HTML/CSSデザインの一部をFlashに移植しているので、Flashのボックスモデルが何であるかは分かりません。 Flashでは、グラデーションの塗りつぶしと非スケーリング1ピクセルストロークの四角形を作成しました。私はピクセル完全な位置とサイズを取得しようとしていますが、経験は予測できませんでした。私は実際に次の質問のパターンを見ていない。正確な状況によって答えが変わります。フラッシュ四角形のボックスモデルとは何ですか?

  1. xyを両方とも0に設定すると、境界線はどこにありますか?それは画面から外れていますか?それは起源によって半分にカットされていますか?それとも完全に見えていますか?
  2. 幅を100に設定すると、塗りが幅98か幅100かですか?
  3. 長方形が整数座標に配置されていない場合、1px太い境界線はどうなりますか?

例:10、Y:10

var sh:Shape = new Shape(); 
sh.graphics.lineStyle(1.0, 0x00FF00, 1.0, false, LineScaleMode.NONE); 
sh.graphics.beginFill(0xFF0000, 1.0); 
sh.graphics.drawRect(0, 0, 100, 100); 
sh.graphics.endFill(); 
addChild(sh); 
sh.x = 10; 
sh.y = 10; 

IはXに正方形100×100を作成しようとしました。 Photoshopで幅と高さを測定したところ、101x101になりました。奇妙な!最終的な寸法は、100x100(内側の境界線)または102x102(外側の境界線)と予想されます。 Flash表示オブジェクトで

enter image description here

答えて

2

ストロークは彼らの塗りつぶしの縁に沿っています。これは、ストロークの半分が塗りの外側にあるようなものです。残りの半分は塗りつぶし内にある。これは、コンテンツ領域の外部にあるCSSの枠線とは異なります。

これは、ステージに配置されたオブジェクトで、塗りつぶしが半透明で、半透明であることが最もよく示されています。下の図の矩形は、200ピクセルで、10ピクセルのストロークです。塗りつぶしは100%アルファで#00FFFFであり、ストロークは50%アルファで#FF0000である。ストローク外の5ピクセルの太さの領域がステージの色とどのようにブレンドされているのか、その内側の5ピクセルの領域が塗りつぶしの色とブレンドされていることに注目してください。 Photoshopで測定された各辺の合計幅は210ピクセル(5 + 200 + 5)です。だから、

、あなたの質問に答えるために...

  1. あなたが0になるようにxyの両方を設定し、境界線が横たわっていたのでしょうか?それは画面から外れていますか?それは起源によって半分にカットされていますか?それとも完全に見えていますか?

    オブジェクト内で上下のストロークの半分が表示されます。残りの半分はステージの端でカットされます。

  2. 幅を100に設定すると、塗りが幅98か幅100かですか?

    塗りつぶしの幅は100ピクセルです。各辺の四角形の幅の半分がストロークで占められていますが、ストロークは実際にスペースを取ったり塗りつぶしたりしません。ストロークの後ろにある塗りつぶし領域が表示されません(上記の図を参照)。

  3. 長方形が整数座標に配置されていない場合、1px太い境界線はどうなりますか?

    stroke hintingがそのストロークで有効になっていない場合は、アンチエイリアスまたはぼかしが描画されます。ストロークヒンティングがオンの場合、ストロークは可能な限りシャープに描かれます(十分なアンチエイリアスを維持しながら)。

+0

基本的に、矩形が1ピクセルのストロークを持つ場合、ピクセルの位置を完全に決めることはできません。エッジがレンダリングされる方法が予測できないからです。私はストロークが偶数の場合にのみ、完全な位置決めをすることができます。なぜなら、ストロークの半分が外側にあり、半分が内側にあることが予測できるからです。 – JoJo

+0

@JoJo:ヒントを有効にするためにストロークで 'pixelHinting'をtrueに設定すると、鮮明なストロークが表示されますが、実際には完全なピクセル位置を完全に達成することはできません。 – BoltClock

0

フラッシュではマージンとパディングは存在しません。あなたはそれらを模倣することができます、それは本当ですが、それはそれらをもう具体的にしません。

唯一の特異点は、脳卒中の測定から生じる。

そうでなければ、なんのこともありません。

あなたはピクセルprecised何かをしたい場合は、使用だけで塗りつぶし、ストロークではありません。

推測すると、円を描く最も簡単な方法は何ですか?ここ は、あなたは以下のとおりです。スペースを消費しないままフラッシュで

graphics.lineStyle(40); 
graphics.moveTo(100, 100); 
graphics.lineTo(100, 101); 

ストロークは、キャップスタイル、関節の方法及び厚さを有しています。

関連する問題