Un fondo pintor de la clase


¿alguna vez has querido pintar un mapa de bits de baldosa? centrado? estirado? el uso de esta clase
Aquí es una clase que he encontrado desde hace mucho tiempo desde uno de los que se han perdido en la memoria de las fuentes, su único objetivo es pintar el fondo de una ventana con una imagen dada (se puede extender su uso mediante tgraphic descendientes como tjpegpicture, agregar JPeg en la cláusula uses TGifImage, agregar Anders Melanders gif, etc.)
unidad de bgpaint
interfaz
usos
& nbsp & nbsp Windows, Gráficos, Clases
tipo
& nbsp & nbsp TTileBackStyle = (tbsNone, tbsPicCenter, tbsPicClip, tbsPicFit, tbsPicHeigth,
& nbsp & nbsp & nbsp & nbsp tbsPicStretch, tbsPicTile, tbsPicWidth)
& nbsp & nbsp TTileBack = clase( TPersistent )
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp FPicture: TPicture
& nbsp & nbsp & nbsp & nbsp FStyle: TTileBackStyle
& nbsp & nbsp & nbsp & nbsp FOnChange: TNotifyEvent
& nbsp & nbsp & nbsp & nbsp procedimiento SetStyle(const Value: TTileBackStyle)
& nbsp & nbsp & nbsp & nbsp procedimiento SetOnChange(const Value: TNotifyEvent)
& nbsp & nbsp & nbsp & nbsp procedimiento SetPicture(const Value: TPicture)
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp constructor Create
& nbsp & nbsp & nbsp & nbsp destructor Destruir reemplazar
& nbsp & nbsp & nbsp & nbsp procedimiento de Asignar(Fuente: TPersistent) reemplazar
& nbsp & nbsp & nbsp & nbsp función de Vacío: Boolean
& nbsp & nbsp & nbsp & nbsp procedimiento de Sorteo(const Lienzo: TCanvas const ARect: TRect)
& nbsp & nbsp & nbsp & nbsp propiedad OnChange: TNotifyEvent leer FOnChange escribir SetOnChange
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp propiedad de Imagen: TPicture leer FPicture escribir SetPicture
& nbsp & nbsp & nbsp & nbsp propiedad de Estilo: TTileBackStyle leer FStyle escribir SetStyle defecto tbsNone
& nbsp & nbsp final
aplicación
{ TTileBack }
procedimiento TTileBack.Asignar(Fuente: TPersistent)
begin
& nbsp & nbsp si la Fuente es TTileBack, a continuación,
& nbsp & nbsp & nbsp & nbsp con TTileBack(Fuente)
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Auto.FStyle := Estilo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Auto.Foto:= Imagen
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp heredado
fin
constructor TTileBack.Crear
begin
& nbsp & nbsp FPicture := TPicture.Crear
& nbsp & nbsp FStyle := tbsNone
fin
destructor TTileBack.Destruir
begin
& nbsp & nbsp FPicture.Libre
& nbsp & nbsp heredado Destruir
fin
procedimiento TTileBack.Dibujar(const Lienzo: TCanvas const ARect: TRect)
var
& nbsp & nbsp Dest: TRect
& nbsp & nbsp XPos, YPos, RWidth, RHeight: Integer
& nbsp & nbsp PicRatio, ImageRatio: Doble
begin
& nbsp & nbsp si está Vacío, a continuación, Salir
& nbsp & nbsp RWidth := ARect.Haga ARect.A la izquierda
& nbsp & nbsp RHeight:= ARect.Parte Inferior - ARect.La parte superior
& nbsp & nbsp XPos := 0
& nbsp & nbsp YPos := 0
& nbsp & nbsp caso del Estilo de
& nbsp & nbsp & nbsp & nbsp tbsNone: Salida
& nbsp & nbsp & nbsp & nbsp tbsPicClip:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.Dibujar(ARect.A La Izquierda, ARect.Arriba, Una Imagen.El gráfico)
& nbsp & nbsp & nbsp & nbsp tbsPicCenter:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := ARect.A La Izquierda (RWidth - Imagen.Ancho) div 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := ARect.Parte Superior (RHeight - Imagen.Altura)div 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.Dibujar(XPos, YPos, Imagen.El gráfico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicFit:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (FPicture.Ancho > 0) y (FPicture.Altura > 0) entonces
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp PicRatio := Imagen.Altura / Imagen.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ImageRatio:=RHeight / RWidth
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si PicRatio > ImageRatio, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := Trunc(RHeight / PicRatio)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := RHeight
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := RWidth
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := Trunc( RWidth * PicRatio )
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Dest := Rect( 0,0,XPos, YPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp OffsetRect(Dest, ARect.A La Izquierda, ARect.La parte superior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(Dest, Imagen.El gráfico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicHeigth:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := Trunc(FPicture.Ancho * (RHeight / Imagen.Altura))

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := RHeight
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Dest := Rect(0, 0, XPos, YPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp OffsetRect(Dest, ARect.A La Izquierda, ARect.La parte superior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(Dest, FPicture.El gráfico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicStretch:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(ARect, Imagen.El gráfico)
& nbsp & nbsp & nbsp & nbsp tbsPicTile:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := ARect.A la izquierda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras XPos < ARect.A la derecha
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := ARect.La parte superior
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras YPos < ARect.Fondo hacen
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.Dibujar(XPos, Ypos, Imagen.El gráfico)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := YPos FPicture.Altura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := XPos Imagen.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicWidth:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := RWidth
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := Trunc(RWidth * (Imagen.Altura / Imagen.Ancho)),
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Dest := Rect(0,0, XPos, YPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp OffsetRect(Dest, ARect.A La Izquierda, ARect.La parte superior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(Dest, Imagen.El gráfico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
fin
función TTileBack.Vacío: Boolean
begin
& nbsp & nbsp Resultado := (Style = tbsNone) o
& nbsp & nbsp & nbsp & nbsp ((Estilo en [tbsPicClip, tbsPicFit, tbsPicHeigth, tbsPicStretch, tbsPicTile, tbsPicWidth]) y
& nbsp & nbsp & nbsp & nbsp ((Imagen = nil) o (Imagen.Gráfico = nil) o (Imagen.Gráfico.Empty)))
fin
procedimiento TTileBack.SetOnChange(const Value: TNotifyEvent)
begin
& nbsp & nbsp FOnChange := Valor
& nbsp & nbsp FPicture.OnChange := Valor
fin
procedimiento TTileBack.SetPicture(const Value: TPicture)
begin
& nbsp & nbsp FPicture.Asignar( Valor )
fin
procedimiento TTileBack.SetStyle(const Value: TTileBackStyle)
begin
& nbsp & nbsp si FStyle <> Valor
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp FStyle := Valor
& nbsp & nbsp & nbsp & nbsp si se ha Asignado(FOnChange), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FOnChange(Auto)
& nbsp & nbsp final
fin
final.
este es un rápido y sucio ejemplo de su uso y atribuciones:

unidad de bgpaintex1
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de diálogo,
& nbsp & nbsp ExtCtrls, bgPaint, StdCtrls, JPeg
tipo
& nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp Image1: TImage
& nbsp & nbsp & nbsp & nbsp ComboBox1: TComboBox
& nbsp & nbsp & nbsp & nbsp Button1: TButton
& nbsp & nbsp & nbsp & nbsp OpenDialog1: TOpenDialog
& nbsp & nbsp & nbsp & nbsp procedimiento FormCreate(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento FormPaint(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento ComboBox1Change(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento Button1Click(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp aBG: TTileBack
& nbsp & nbsp final
var
& nbsp & nbsp Form1: TForm1
aplicación
utiliza TypInfo
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject)
var i: TTileBackStyle
begin
& nbsp & nbsp aBG := TTileBack.Crear
& nbsp & nbsp aBG.Foto := Image1.Imagen
& nbsp & nbsp aBG.Estilo := tbsPicFit
& nbsp & nbsp for i := tbsNone a tbsPicWidth hacer
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp ComboBox1.Elementos.AddObject(GetEnumName(TypeInfo(TTileBackStyle), Integer(i)), TObject(i))
& nbsp & nbsp final
fin
procedure TForm1.FormPaint(Sender: TObject)
begin
& nbsp & nbsp aBG.Dibujar(Lienzo, ClientRect)
fin
procedure TForm1.ComboBox1Change(Sender: TObject)
begin
& nbsp & nbsp aBG.Estilo := TTileBackStyle(ComboBox1.Elementos.Los Objetos[ComboBox1.ItemIndex])
& nbsp & nbsp Invalidar
fin
procedure TForm1.Button1Click(Sender: TObject)
begin
& nbsp & nbsp si OpenDialog1.Ejecutar, a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Image1.Imagen.LoadFromFile(OpenDialog1.Nombre de archivo)
& nbsp & nbsp & nbsp & nbsp aBG.Foto := Image1.Imagen
& nbsp & nbsp & nbsp & nbsp Invalidar
& nbsp & nbsp final
fin
final.









Un fondo pintor de la clase


Un fondo pintor de la clase : Multi-millones de consejos para hacer su vida mas facil.


¿alguna vez has querido pintar un mapa de bits de baldosa? centrado? estirado? el uso de esta clase
Aqui es una clase que he encontrado desde hace mucho tiempo desde uno de los que se han perdido en la memoria de las fuentes, su unico objetivo es pintar el fondo de una ventana con una imagen dada (se puede extender su uso mediante tgraphic descendientes como tjpegpicture, agregar JPeg en la clausula uses TGifImage, agregar Anders Melanders gif, etc.)
unidad de bgpaint
interfaz
usos
& nbsp & nbsp Windows, Graficos, Clases
tipo
& nbsp & nbsp TTileBackStyle = (tbsNone, tbsPicCenter, tbsPicClip, tbsPicFit, tbsPicHeigth,
& nbsp & nbsp & nbsp & nbsp tbsPicStretch, tbsPicTile, tbsPicWidth)
& nbsp & nbsp TTileBack = clase( TPersistent )
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp FPicture: TPicture
& nbsp & nbsp & nbsp & nbsp FStyle: TTileBackStyle
& nbsp & nbsp & nbsp & nbsp FOnChange: TNotifyEvent
& nbsp & nbsp & nbsp & nbsp procedimiento SetStyle(const Value: TTileBackStyle)
& nbsp & nbsp & nbsp & nbsp procedimiento SetOnChange(const Value: TNotifyEvent)
& nbsp & nbsp & nbsp & nbsp procedimiento SetPicture(const Value: TPicture)
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp constructor Create
& nbsp & nbsp & nbsp & nbsp destructor Destruir reemplazar
& nbsp & nbsp & nbsp & nbsp procedimiento de Asignar(Fuente: TPersistent) reemplazar
& nbsp & nbsp & nbsp & nbsp funcion de Vacio: Boolean
& nbsp & nbsp & nbsp & nbsp procedimiento de Sorteo(const Lienzo: TCanvas const ARect: TRect)
& nbsp & nbsp & nbsp & nbsp propiedad OnChange: TNotifyEvent leer FOnChange escribir SetOnChange
& nbsp & nbsp publicado
& nbsp & nbsp & nbsp & nbsp propiedad de Imagen: TPicture leer FPicture escribir SetPicture
& nbsp & nbsp & nbsp & nbsp propiedad de Estilo: TTileBackStyle leer FStyle escribir SetStyle defecto tbsNone
& nbsp & nbsp final
aplicacion
{ TTileBack }
procedimiento TTileBack.Asignar(Fuente: TPersistent)
begin
& nbsp & nbsp si la Fuente es TTileBack, a continuacion,
& nbsp & nbsp & nbsp & nbsp con TTileBack(Fuente)
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Auto.FStyle := Estilo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Auto.Foto:= Imagen
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp heredado
fin
constructor TTileBack.Crear
begin
& nbsp & nbsp FPicture := TPicture.Crear
& nbsp & nbsp FStyle := tbsNone
fin
destructor TTileBack.Destruir
begin
& nbsp & nbsp FPicture.Libre
& nbsp & nbsp heredado Destruir
fin
procedimiento TTileBack.Dibujar(const Lienzo: TCanvas const ARect: TRect)
var
& nbsp & nbsp Dest: TRect
& nbsp & nbsp XPos, YPos, RWidth, RHeight: Integer
& nbsp & nbsp PicRatio, ImageRatio: Doble
begin
& nbsp & nbsp si esta Vacio, a continuacion, Salir
& nbsp & nbsp RWidth := ARect.Haga ARect.A la izquierda
& nbsp & nbsp RHeight:= ARect.Parte Inferior - ARect.La parte superior
& nbsp & nbsp XPos := 0
& nbsp & nbsp YPos := 0
& nbsp & nbsp caso del Estilo de
& nbsp & nbsp & nbsp & nbsp tbsNone: Salida
& nbsp & nbsp & nbsp & nbsp tbsPicClip:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.Dibujar(ARect.A La Izquierda, ARect.Arriba, Una Imagen.El grafico)
& nbsp & nbsp & nbsp & nbsp tbsPicCenter:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := ARect.A La Izquierda (RWidth - Imagen.Ancho) div 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := ARect.Parte Superior (RHeight - Imagen.Altura)div 2
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.Dibujar(XPos, YPos, Imagen.El grafico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicFit:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (FPicture.Ancho > 0) y (FPicture.Altura > 0) entonces
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp PicRatio := Imagen.Altura / Imagen.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ImageRatio:=RHeight / RWidth
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si PicRatio > ImageRatio, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := Trunc(RHeight / PicRatio)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := RHeight
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := RWidth
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := Trunc( RWidth * PicRatio )
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Dest := Rect( 0,0,XPos, YPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp OffsetRect(Dest, ARect.A La Izquierda, ARect.La parte superior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(Dest, Imagen.El grafico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicHeigth:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := Trunc(FPicture.Ancho * (RHeight / Imagen.Altura))

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := RHeight
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Dest := Rect(0, 0, XPos, YPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp OffsetRect(Dest, ARect.A La Izquierda, ARect.La parte superior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(Dest, FPicture.El grafico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicStretch:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(ARect, Imagen.El grafico)
& nbsp & nbsp & nbsp & nbsp tbsPicTile:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := ARect.A la izquierda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras XPos < ARect.A la derecha
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := ARect.La parte superior
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras YPos < ARect.Fondo hacen
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.Dibujar(XPos, Ypos, Imagen.El grafico)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := YPos FPicture.Altura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := XPos Imagen.Anchura
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp tbsPicWidth:
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp XPos := RWidth
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp YPos := Trunc(RWidth * (Imagen.Altura / Imagen.Ancho)),
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Dest := Rect(0,0, XPos, YPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp OffsetRect(Dest, ARect.A La Izquierda, ARect.La parte superior)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Lienzo.StretchDraw(Dest, Imagen.El grafico)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
fin
funcion TTileBack.Vacio: Boolean
begin
& nbsp & nbsp Resultado := (Style = tbsNone) o
& nbsp & nbsp & nbsp & nbsp ((Estilo en [tbsPicClip, tbsPicFit, tbsPicHeigth, tbsPicStretch, tbsPicTile, tbsPicWidth]) y
& nbsp & nbsp & nbsp & nbsp ((Imagen = nil) o (Imagen.Grafico = nil) o (Imagen.Grafico.Empty)))
fin
procedimiento TTileBack.SetOnChange(const Value: TNotifyEvent)
begin
& nbsp & nbsp FOnChange := Valor
& nbsp & nbsp FPicture.OnChange := Valor
fin
procedimiento TTileBack.SetPicture(const Value: TPicture)
begin
& nbsp & nbsp FPicture.Asignar( Valor )
fin
procedimiento TTileBack.SetStyle(const Value: TTileBackStyle)
begin
& nbsp & nbsp si FStyle <> Valor
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp FStyle := Valor
& nbsp & nbsp & nbsp & nbsp si se ha Asignado(FOnChange), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FOnChange(Auto)
& nbsp & nbsp final
fin
final.
este es un rapido y sucio ejemplo de su uso y atribuciones:

unidad de bgpaintex1
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de dialogo,
& nbsp & nbsp ExtCtrls, bgPaint, StdCtrls, JPeg
tipo
& nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp Image1: TImage
& nbsp & nbsp & nbsp & nbsp ComboBox1: TComboBox
& nbsp & nbsp & nbsp & nbsp Button1: TButton
& nbsp & nbsp & nbsp & nbsp OpenDialog1: TOpenDialog
& nbsp & nbsp & nbsp & nbsp procedimiento FormCreate(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento FormPaint(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento ComboBox1Change(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento Button1Click(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp aBG: TTileBack
& nbsp & nbsp final
var
& nbsp & nbsp Form1: TForm1
aplicacion
utiliza TypInfo
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject)
var i: TTileBackStyle
begin
& nbsp & nbsp aBG := TTileBack.Crear
& nbsp & nbsp aBG.Foto := Image1.Imagen
& nbsp & nbsp aBG.Estilo := tbsPicFit
& nbsp & nbsp for i := tbsNone a tbsPicWidth hacer
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp ComboBox1.Elementos.AddObject(GetEnumName(TypeInfo(TTileBackStyle), Integer(i)), TObject(i))
& nbsp & nbsp final
fin
procedure TForm1.FormPaint(Sender: TObject)
begin
& nbsp & nbsp aBG.Dibujar(Lienzo, ClientRect)
fin
procedure TForm1.ComboBox1Change(Sender: TObject)
begin
& nbsp & nbsp aBG.Estilo := TTileBackStyle(ComboBox1.Elementos.Los Objetos[ComboBox1.ItemIndex])
& nbsp & nbsp Invalidar
fin
procedure TForm1.Button1Click(Sender: TObject)
begin
& nbsp & nbsp si OpenDialog1.Ejecutar, a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Image1.Imagen.LoadFromFile(OpenDialog1.Nombre de archivo)
& nbsp & nbsp & nbsp & nbsp aBG.Foto := Image1.Imagen
& nbsp & nbsp & nbsp & nbsp Invalidar
& nbsp & nbsp final
fin
final.


Un fondo pintor de la clase

Un fondo pintor de la clase : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación