ゴボウ製
サンプルに使う画像を作ろうと思って、五芒星を描画してみようとしたらえらい苦労した。
線画なら簡単なのだが、パスを作って中を塗るとかそういった機能は無いので、座標を計算して三角形で描かなければならない。
どうにかできたのでメモ。
require 'dxruby' image = Image.new(300,300) bx = 0 by = -50 x1 = [] y1 = [] (0..4).each do |i| x1[i] = bx * Math.cos(Math::PI / 180 * (i * 72 - 36)) - by * Math.sin(Math::PI / 180 * (i * 72 - 36)) + image.width/2 y1[i] = bx * Math.sin(Math::PI / 180 * (i * 72 - 36)) + by * Math.cos(Math::PI / 180 * (i * 72 - 36)) + image.height/2 end sx = x1[0] + (x1[1] - x1[0]) / 2 - image.width/2 sy = y1[0] - (x1[1] - x1[0]) / 2 * Math.tan(Math::PI / 180 * 72) - image.height/2 x2 = [] y2 = [] (0..4).each do |i| x2[i] = sx * Math.cos(Math::PI / 180 * i * 72) - sy * Math.sin(Math::PI / 180 * i * 72) + image.width/2 y2[i] = sx * Math.sin(Math::PI / 180 * i * 72) + sy * Math.cos(Math::PI / 180 * i * 72) + image.height/2 end image.triangle_fill(x2[0], y2[0], x1[2], y1[2], x1[4], y1[4], C_WHITE) image.triangle_fill(x2[1], y2[1], x1[3], y1[3], x1[0], y1[0], C_WHITE) image.triangle_fill(x2[2], y2[2], x1[4], y1[4], x1[1], y1[1], C_WHITE) image.triangle_fill(x2[3], y2[3], x1[0], y1[0], x1[2], y1[2], C_WHITE) image.triangle_fill(x2[4], y2[4], x1[1], y1[1], x1[3], y1[3], C_WHITE) Window.loop do Window.draw(0,0,image) end