unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    procedure FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
// Описываем переменные типа HRGN
  var FullRgn, EllRgn, EllRgn2: HRGN;
begin
// Описываем регион по размеру активного окна в виде квадрата
  FullRgn := CreateRectRgn(0, 0, Width, Height);
// Описываем 2 региона в виде квадрата со скруглёнными углами разного размера
  EllRgn := CreateRoundRectRgn(50, 50, Width - 50, Height - 50, 70, 70);
  EllRgn2 := CreateRoundRectRgn(80, 80, Width - 80, Height - 80, 70, 70);
// Вычитаем из региона FullRgn регион EllRgn и помещаем результат в FullRgn
  CombineRgn(FullRgn, FullRgn, EllRgn, RGN_DIFF);
// Вычитаем из региона FullRgn регион EllRgn2 и помещаем результат в FullRgn
  CombineRgn(FullRgn, FullRgn, EllRgn2, RGN_OR);
// Изменяем регион нашего окна на регион FullRgn
  SetWindowRgn(Handle, FullRgn, True);
end;

// В этой процедуре по таймеру происходит изменение размеров картинки
// Частота изменения записана в свойстве Interval, если компьютер
// у вас слабенький то поставте число побольше
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Если окно слишком мало по вертикали то скрываем компонент Image1
  if Form1.Height < 150 then Image1.Visible := False
    else Image1.Visible := True;
    
  Image1.Top := 57;
  Image1.Left := 76;
  Image1.Width := Form1.Width - 161;
  Image1.Height := Form1.Height - 161;

// А интересно какое у нас разрешение экрана
Application.Title := 'Screen:' + FloatToStr(Screen.Width)
                     + ' X ' + FloatToStr(Screen.Height);
end;

end.
