ShapeForm es un componente no visual que permite cambiar la 'forma' con
que se dibuja una ventana (form), permitiendo que ésta sea poligonal,
con la silueta de una imagen, multipoligonal, etc.
Nota :El código de la función utilizada para crear
la región de un bitmap es de Felipe Rocha
Machado que a su vez es de la traducción del código
C de Jean-Edouard Lachand-Robert
Propiedades:
Active : Activa/Desactiva el
componente
Corner : Coordenadas X,Y para formar el
arco de las esquinas de la ventana cuando la forma (Shape) elegida sea
un Rectángulo redondeado.
Color : Colores usados para especificar
el color que se utilizará como transparente al crear una región
desde un bitmap.
Transparent : Color para los
pixels transparentes
Tolerance : Tolerancia para los pixels
transparentes (pixel transparente si >=transparente y <=(transparente+tolerance)
DrawPicture : Dibuja automáticamente
el bitmap desde el que se ha creado la región o no (sólo
lo dibuja en tiempo de ejecución). Sólo se tiene en cuenta
cuando Shape es de tipo imagen
FormBorderStyle : Indica el estilo del borde del form cuando el componente
está inactivo
FormBorderSize : Indica el tamaño del borde del form cuando el componente
está inactivo
Frame : Tipo de borde del form :
Brush : Brocha utilizada para
dibujar el borde
Size : Tamaño del dibujo del borde
Framed : Dibujar el borde o no (sólo
dibuja el borde en ejecución, no en diseño).
Name: Nombre del control.
Picture : Imagen utilizada para crear la
región en caso de ser de tipo imagen el Shape.
Polygons : Polígonos que formarán
la 'forma' de la ventana. Sólo se usan en el caso de que la propiedad Shape del componente sea sfPolygon.
CombineMode: Modo de combinación
de los distintos polígonos, es decir la operación realizada(cmOR,
cmXOR, cmAND,
cmDIFF)
LoadType: La carga de polígonos nuevos
reemplaza a los existentes (ltReplace)
o se añaden al final (ltAppend)
NCPolygon: Polígono 'Non Client'.
Si sobre este polígono no se añade ningún control que lo cubra por entero,
durante la ejecución del programa se podrá mover la ventana
pulsando con el ratón sobre él.
Items : Cada uno de los polígonos.
Corners: Si el tipo de polígono
es ptRoundRect, entonces índica
los parámetros del arco de las esquinas del polígono.
Name: Nombre del polígono.
Points: Conjunto de puntos del polígono.
PolyfillMode: Espedifica el modo en
que se determina que pixels se encuentran en una regiós (form):
pfmWinding, pfmAlternate.
Ver la ayuda de CreatePolygonRgn en delphi..
PolType: Tipo de polígono:
Tipo |
Descripción |
ptOther |
Cualquier tipo de polígono |
ptOval |
Elipse |
ptRect |
Rectángulo |
ptRoundRect |
Rectángulo redondeado |
Shape : Tipo de la forma que tendrá
la ventana :
Tipo |
Descripción |
sfRect |
Rectángulo |
sfRoundedRect |
Rectángulo redondeado |
sfElliptical |
Elíptico |
sfPolygon |
Multipoligonal |
sfImage |
Imagen bitmap |
Tag : Etiqueta.
Métodos:
DrawFrame: Dibuja el marco alrededor de la ventana.
Eventos:
OnShapeChange: Se produce cada
vez que cambia el tipo de forma.
OnStatusChange: Se produce cada vez que
cambia el estado (Activo/Desactivo) del componente.
Este componente tiene la posibilidad de cargar los polígonos (Polygons)
desde un fichero, así como guardarlos en otro. Desde el IDE de
delphi si picamos sobre el control con el botón derecho aparecerán
dos opciones para hacer esto. El formato de este fichero es XML como el
siguiente ejemplo :
<?xml version="1.0" encoding="ISO-8859-1"?> <Polygons> <Polygon Name="Polygon_0" Type="Other"> <Corners X="0" Y="0"/> <Center X="337" Y="427"/ Value="True"> <Point X="320" Y="312"/> <Point X="477" Y="399"/> <Point X="416" Y="541"/> <Point X="249" Y="542"/> <Point X="197" Y="406"/> <Point X="273" Y="364"/> </Polygon> <Polygon Name="Polygon_1" Type="Oval"> <Corners X="0" Y="0"/> <Center X="335" Y="468" Value="True"/> <Point X="289" Y="430"/> <Point X="381" Y="507"/> </Polygon> <Polygon Name="Polygon_2" Type="Other"> <Corners X="0" Y="0"/> <Center X="171" Y="171" Value="False"/> <Point X="342" Y="171"/> <Point X="292" Y="292"/> <Point X="171" Y="342"/> <Point X="50" Y="292"/> <Point X="0" Y="171"/> <Point X="50" Y="50"/> <Point X="171" Y="0"/> <Point X="292" Y="50"/> </Polygon> <Polygon Name="Polygon_3" Type="RoundRect"> <Corners X="50" Y="50"/> <Center X="108" Y="441" Value="False"/> <Point X="52" Y="376"/> <Point X="165" Y="506"/> </Polygon> </Polygons>
Cada polígono tiene un nombre -Name- un tipo -Type-
que puede ser Rect, RoundRect,
Other y Oval.
Por otra parte tiene un centro -Center- (que no tiene que
ser el centro real) , esquinas -Corners- necesarias para
el caso de que el tipo sea RoundRect y tantos puntos -Point-
como sean necesarios (Rect, RoundRed y Oval sólo necesitan 2 puntos).
Este componente tiene un editor de polígonos que aparecerá cuando se haga un doble Click sobre el mismo o se elija la opción desde el menú contextual del componente. Descarga manual en pdf.
|
|