Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Tus formularios de "forma" diferente (https://www.clubdelphi.com/foros/showthread.php?t=80628)

dec 30-06-2006 23:11:21

Tus formularios de "forma" diferente
 
Bueno este truco esta muy chido, pero siendo sinceros la mayoria de los casos solo la utilizaremos para hacer SplashScreens, en fin hay muchas formas de hacerlo pues solo menciono elipses, reectangulos y circulos, pero le dejo al lector de tarea crear formas irregulares, tal vez trapecios o hexagonos, etc. (a veces el API de Windows es tan rara!!!)

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  hRgn: THandle;
begin
  // Crear una zona eliptica
  hRgn := CreateEllipticRgn(10, 10, Width - 20, Height - 20);
  // poner la nueva region
  SetWindowRgn(Handle, hRgn, False);
end;
Código para crear un form con un hoyo
procedure TForm1.FormCreate(Sender: TObject);
var
  hRgn1, hRgn2: THandle;
begin
  // creamos una zona rectangular del mismo tamaño del form
  hRgn1 := CreateRectRgn(0, 0, Width, Height);
  // creamos una zona circular de 100 x 100 en el centro del form
  hRgn2 := CreateEllipticRgn((Width div 2) - 50, (Height div 2) - 50, (Width div 2) + 50, (Height div 2) + 50);
  // combinamos las regiones quitando la region circular
  // de la rectangular
  CombineRgn(hRgn1, hRgn1, hRgn2, RGN_DIFF);
  // poner la nueva region
  SetWindowRgn(Handle, hRgn1, False);
  // borrar la region 2, la region 1 se la apaña por windows y la borrawindows
  DeleteObject(hRgn2);
end;


La franja horaria es GMT +2. Ahora son las 09:09:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi