Код:#=============================================================================== # Bitmap # Класс, отвечающий за рисунок. Рисунки - своеобразное выражение графики. #=============================================================================== class Bitmap #----------------------------------------------------------------------------- # Очищает заданный участок изображения путем заливки его прозрачностью # params: # x, y, width, height :integer - параметры очищаемой области # или # rect : rect - очищаемая область #----------------------------------------------------------------------------- def clear_rect(*params) params.push(Color.new(0, 0, 0, 0)) self.fill_rect(*params) end #----------------------------------------------------------------------------- # Заливает указанную область градиентом # x, y, width, height :integer - параметры заливаемой области # color1 :color - начальный цвет градиента # color2 :color - конечный цвет градиента # vertical :bool - если true - вертикальная заливка, иначе - горизонтальная #----------------------------------------------------------------------------- def gradient_fill_rect(x, y, width, height, color1, color2, vertical = false) self.gradient_fill_rect(Rect.new(x, y, width, height), color1, color2, vertical = false) end #----------------------------------------------------------------------------- # Заливает указанную область градиентом # rect :rect - заливаемая область # color1 :color - начальный цвет градиента # color2 :color - конечный цвет градиента # vertical :bool - если true - вертикальная заливка, иначе - горизонтальная #----------------------------------------------------------------------------- def gradient_fill_rect(rect, color1, color2, vertical = false) if color2 == color1 self.fill_rect(rect, color1) else distance = vertical ? rect.height : rect.width for i in 0...distance # Graphics.update # Следить r = color1.red * (distance-1-i)/(distance-1) + color2.red * i/(distance-1) g = color1.green * (distance-1-i)/(distance-1) + color2.green * i/(distance-1) b = color1.blue * (distance-1-i)/(distance-1) + color2.blue * i/(distance-1) a = color1.alpha * (distance-1-i)/(distance-1) + color2.alpha * i/(distance-1) self.fill_rect(vertical ? rect.x : rect.x + i, vertical ? rect.y + i : rect.y, vertical ? rect.width : 1, vertical ? 1 : rect.height, Color.new(r, g, b, a)) end end end end
Социальные закладки