1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
require 'rmagick'
i = Magick::Image.new(300, 220, Magick::HatchFill.new('white', 'lightcyan2'))
gc = Magick::Draw.new
# Draw the border rectangle.
gc.fill_opacity(0)
gc.stroke_width(1)
gc.stroke('gray50')
gc.rectangle(40, 50, 250, 180)
# Draw the circles around the rectangle corners and
# arc endpoints. All the circles have a 3-pixel radius.
gc.circle(40, 50, 40 + 3, 50)
gc.circle(250, 180, 250 + 3, 180)
gc.circle(250, 114, 250 + 3, 114)
gc.circle(146, 50, 146 + 3, 50)
# Annotate
gc.font_weight(Magick::NormalWeight)
gc.font_style(Magick::NormalStyle)
gc.fill('black')
gc.fill_opacity(1)
gc.stroke('transparent')
# xMagick recognizes the braces as delimiters.
gc.gravity(Magick::NorthWestGravity)
gc.text(42, 37, '{40, 50}')
gc.text(188, 108, '{0 degrees}')
gc.gravity(Magick::SouthEastGravity)
gc.text(300 - 250, 220 - 195, '{250, 180}')
gc.gravity(Magick::NorthGravity)
gc.text(0, 67, '{270 degrees}')
# Draw the arc
gc.fill_opacity(0)
gc.stroke('red').stroke_width(3)
gc.arc(40, 50, 250, 180, 0, 270)
# Draw on the canvas
gc.draw(i)
i.border!(1, 1, 'lightcyan2')
# i.display
i.write('arc.gif')
|