Delphi World - За какое время было создано изображение
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
За какое время было создано изображение

Автор: Даниил Карапетян
WEB сайт: http://program.dax.ru

О значении вpемени.
Чтобы понять значение года, поговоpите со студентом, не сдавшим сессию.
Чтобы понять значение месяца, поговоpите с женщиной, pодившей недоношенного pебенка.
Чтобы понять значение недели, поговоpите с pедактоpом еженедельного обозpения.
Чтобы понять значение минуты, поговоpите с тем, кто опоздал на поезд.
Чтобы понять значение секунды, поговоpите с попавшим в автокатастpофу.
Чтобы понять значение миллисекунды, поговоpите с бегуном, пpишедшим втоpым в олимпийском забеге.
О наносекунде спpосите пpоектиpовщика хаpдвеpа.
Если вам все еще непонятно значение вpемени, из вас получится пpогpаммист.

При нажатии на Button1 используется свойство Pixels, а при нажатии на Button2 - ScanLine. В заголовок окна выводится время в миллисекундах, за которое было создано изображение.


procedure TForm1.Button1Click(Sender: TObject);
var
  t: cardinal;
  x, y: integer;
  bm: TBitmap;
begin
  bm := TBitmap.Create;
  bm.PixelFormat := pf24bit;
  bm.Width := Form1.ClientWidth;
  bm.Height := Form1.ClientHeight;
  t := GetTickCount;
  for y := 0 to bm.Height - 1 do
    for x := 0 to bm.Width - 1 do
    bm.Canvas.Pixels[x,y] := RGB(x+y, x-y, y-x);
  Form1.Caption := IntToStr(GetTickCount - t);
  Form1.Canvas.Draw(0, 0, bm);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  t: cardinal;
  x, y: integer;
  bm: TBitmap;
  p: PByteArray;
begin
  bm := TBitmap.Create;
  bm.PixelFormat := pf24bit;
  bm.Width := Form1.ClientWidth;
  bm.Height := Form1.ClientHeight;
  t := GetTickCount;
  for y := 0 to bm.Height - 1 do
  begin
    p := bm.ScanLine[y];
    for x := 0 to bm.Width - 1 do
    begin
      p^[x*3] := x+y;
      p^[x*3+1] := x-y;
      p^[x*3+2] := y-x;
    end;
  end;
  Form1.Caption := IntToStr(GetTickCount - t);
  Form1.Canvas.Draw(0, 0, bm);
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования