Sha256: 02fee7391689b15de30649ab4b9f451686ec920e6b32f402f3cfbdc150c46918
Contents?: true
Size: 1.27 KB
Versions: 13
Compression:
Stored size: 1.27 KB
Contents
#!/usr/bin/env ruby -w require 'rmagick' # Demonstrate the affine primitive. Transform the # coordinate space to put the origin in the lower # left corner. imgl = Magick::ImageList.new imgl.new_image 200, 200, Magick::HatchFill.new('white','lightcyan2') gc = Magick::Draw.new max_x = imgl.columns max_y = imgl.rows # Translate the y origin to the bottom of the window. # Invert the y points by scaling by -1. Combine the # two operations using the affine method. That is, the # affine method is equivalent to: # gc.translate 0, max_y # gc.scale 1, -1 gc.affine(1, 0, 0, -1, 0, max_y) gc.stroke('gray50') gc.fill('gray50') gc.stroke_width(1) # Draw up-pointing arrow. gc.polyline(10, 10, 10, max_y-10, 5, max_y-15, 15, max_y-15, 10, max_y-10) # Draw right-pointing arrow gc.polyline(10, 10, max_x-10, 10, max_x-15, 5, max_x-15, 15, max_x-10, 10) gc.draw(imgl) # Add labels. Use a different graphics context with a "normal" # coordinate system so the text isn't inverted. text_gc = Magick::Draw.new text_gc.pointsize(14) text_gc.font_weight(Magick::NormalWeight) text_gc.stroke('transparent') text_gc.text(15, max_y-15, "'0,0'") text_gc.text(max_x-20, max_y-16, "'+x'") text_gc.text(12, 15, "'+y'") text_gc.draw(imgl) imgl.border!(1, 1, 'lightcyan2') imgl.write('affine.gif')
Version data entries
13 entries across 13 versions & 3 rubygems