EDITTEDは完全 それでも、あなたはこの
のようにそれを呼び出すことができますいくつかの作業を必要としますが、
module Prawn
module Graphics
def fill_and_stroke_bounding_box(options={},&block)
current_settings = {fill_color: fill_color,
stroke_color: stroke_color,
line_width: self.line_width }
fill_color options[:fill_color] || fill_color
stroke_color options[:stroke][:color] || stroke_color if options[:stroke]
self.line_width options[:stroke][:width] || self.line_width if options[:stroke]
rectangle options[:position], options[:width], options[:height]
options[:stroke] ? fill_and_stroke : fill
box_options = convert_box_options(options)
options[:revert_before_block] ? revert(current_settings) : check_fill_visiblity(options[:text_color])
fill_color options[:text_color] || fill_color
bounding_box(box_options[:position],box_options[:options]) do
if block_given?
block.call
end
end
revert(current_settings) unless options[:skip_revert]
end
def revert(settings={})
fill_color settings[:fill_color]
stroke_color settings[:stroke_color]
self.line_width settings[:line_width]
end
def convert_box_options(options={})
converted_options = {position: options.delete(:position)}
if options.delete(:stroke)
resize_box(options)
reposition_box(converted_options)
end
converted_options.merge({options: options})
end
def resize_box(options ={})
[:width,:height].each do |param|
options[param] -= (self.line_width * 2)
end
end
def reposition_box(options)
options[:position][0] += self.line_width
options[:position][1] -= self.line_width
end
def check_fill_visiblity(text_color)
text_color ||= fill_color
warn "[WARNING] Text Will Not be visible without text_color set or revert_before_block" if text_color == fill_color
end
end
end
これを試してみます
fill_and_stroke_bounding_box(position:[0,cursor],
stroke:{color: "7CFC00",width: 2.mm},
text_color: "668B8B"
fill_color:"FFFFFF",
width: 19.cm, height: 100
) do
必要とされるの
唯一の選択肢はposition
、height
、そしてwidth
(bounding_box
がheight
必要はありませんが、長方形の内側にそれを置いているので、あなたがheight
を指定する必要があります。
text_color
またはrevert_before_block
も設定することをお勧めしますが、ブロック内のテキストは表示されません。
options
には、ブロックの使用を含むすべてのbounding_boxオプションと、矩形の外側ストロークを設定できる次の新しいオプションstroke:{:color,:width}
が含まれています。 fill_color:
矩形の色を設定します。 text_color
ブロック内のテキストの色。 revert_before_block
は、fill_color
がPrawnのtext_colorを制御するため、ブロックを実行する前に色を元に戻します。正しい色がすでに設定されている場合は、text_color
の代わりにこのオプションを使用できます。 skip_revert
これは、このメソッドを呼び出す前に設定されたfill_color
,stroke_color
、およびself.line_width
のオプションを破棄します。 text_color
がfill_color
と同じ場合は、この拡張子もwarn
になります。
これは誰かを助けることを望みます。
これにはどんな解決法が見つかりましたか? – inquisitive