Показано с 1 по 2 из 2

Тема: Bitmap

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Bitmap

    Код:
    #===============================================================================
    # 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
    Последний раз редактировалось Equilibrium Keeper; 30.07.2011 в 20:19.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Bitmap