#!/usr/bin/env ruby -w require 'rmagick' # Demonstrate the use of RMagick's Draw class # and show the default coordinate system. # Create a canvas to draw on. Use the HatchFill class to # cross-hatch the background with light gray lines every 10 pixels. canvas = Magick::ImageList.new canvas.new_image(250, 250, Magick::HatchFill.new('white', 'gray90')) # Draw a border around the edges of the canvas. border = Magick::Draw.new border.stroke('thistle') border.fill_opacity(0) border.rectangle(0,0, canvas.columns-1, canvas.rows-1) border.draw(canvas) # Draw gold axes with arrow-heads. axes = Magick::Draw.new axes.fill_opacity(0) axes.stroke('gold3') axes.stroke_width(4) axes.stroke_linecap('round') axes.stroke_linejoin('round') axes.polyline(18,canvas.rows-10, 10,canvas.rows-3, 3,canvas.rows-10, 10,canvas.rows-10, 10,10, canvas.columns-10,10, canvas.columns-10,3, canvas.columns-3,10, canvas.columns-10, 18) axes.draw(canvas) # Draw a red circle to show the direction of rotation. # Make it slightly transparent so the hatching will show through. circle = Magick::Draw.new circle.stroke('tomato') circle.fill_opacity(0) circle.stroke_opacity(0.75) circle.stroke_width(6) circle.stroke_linecap('round') circle.stroke_linejoin('round') circle.ellipse(canvas.rows/2,canvas.columns/2, 80, 80, 0, 315) circle.polyline(180,70, 173,78, 190,78, 191,62) circle.draw(canvas) # Label the axes and the circle. labels = Magick::Draw.new labels.font_weight(Magick::NormalWeight) labels.fill('black') labels.stroke('transparent') labels.font_style(Magick::ItalicStyle) labels.pointsize(14) labels.gravity(Magick::NorthWestGravity) labels.text(20,30, "'0,0'") labels.gravity(Magick::NorthEastGravity) labels.text(20,30, "'+x'") labels.gravity(Magick::SouthWestGravity) labels.text(20,20, "'+y'") labels.gravity(Magick::CenterGravity) labels.text(0,0, 'Rotation') labels.draw(canvas) #canvas.display canvas.write('axes.gif') exit