• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.


  • Иллюстрированный самоучитель по Delphi 7 для начинающих

    Просмотр мультипликации

    Листинг 10.12. Мультик (использование метода CopRect).

    unit multik;
    interface
    uses
    Windows, Messages, SysUtils, Classes,
    Graphics, Controls, Forms, Dialogs,
    ExtCTRLs, StdCTRLs;
    type
    TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormActivate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1l: TForm1;
    implementation
    ($R *.DFM}
    const
    FILMFILE = 'film2.bmp'; // фильм – bmp-файл
    N_KADR=12; // кадров в фильме (для данного файла)
    var
    Film: TBitMap; // фильм – все кадры
    WKadr,HKadr: integer; // ширина и высота кадра
    CKadr: integer; // номер текущего кадра
    RectKadr: TRect; // положение и размер кадра в фильме
    Rect1: Trect; // координаты и размер области отображения фильма
    procedure TForm1.FormActivate(Sender: TObject);
    begin
    Film: = TBitMap.Create;
    Film.LoadFromFile(FILMFILE);
    WKadr: = Round(Film.Width/N_Kadr);
    HKadr: = Film.Height;
    Rect1: = Bounds(10.10,WKadr,HKadr);
    Ckadr: = 0;
    Form1.Timerl.Interval: = 150; // период обновления кадров – 0.15 с
    Form1.Timerl.Enabled: = True; // запустить таймер
    end;
    // отрисовка кадра procedure DrawKadr;
    begin
    // определим положение текущего кадра в фильме
    RectKadr: = Bounds(WKadr*CKadr,0,WKadr,HKadr);
    // вывод кадра из фильма
    Form1.Canvas.CopyRect(Rect1,Film*.Canvas,RectKadr);
    // подготовимся к выводу следующего кадра
    CKadr: = CKadr+1;
    if CKadr = N_KADR then CKadr: = 0;:
    end;
    // обработка сигнала от таймера
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    DrawKadr;
    end;
    end.
    

    Программа состоит из трех процедур. Процедура TForm1.FormActivate создает объект Film и загружает в него фильм – BMP-файл, в котором находятся кадры фильма. Затем, используя информацию о размере загруженного битового образа, процедура устанавливает значения характеристик кадра: высоту и ширину.

    После этого создается объект Kadr (типа TBitMap), предназначенный для хранения текущего кадра. Следует обратить внимание, что после создания объекта Kadr принудительно устанавливаются значения свойств width и Height. Если этого не сделать, то созданный объект будет существовать, однако память для хранения битового образа не будет выделена. В конце своей работы процедура TForml.FormActivate устанавливает номер текущего кадра и запускает таймер.

    Основную работу в программе выполняет процедура DrawKadr, которая выделяет из фильма очередной кадр и выводит его в форму. Выделение кадра и его отрисовку путем копирования фрагмента картинки с одной поверхности на другую выполняет метод copyRect (рис. 10.21), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра. Запускает процедуру DrawKadr процедура TForm1.Timer1.Timer, обрабатывающая событие OnTimer.

    Иллюстрированный самоучитель по Delphi 7 для начинающих › Графические возможности Delphi › Просмотр мультипликации
    Рис. 10.21. Инструкция Canvas1.CopyRect (Rect1, Canvas2, Rect2) копирует в область Rect1 поверхности Canvas1 область Rect2 с поверхности Canvas2

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.