hola...
respecto a lo que muestras de tu codigo ...
Cita:
Empezado por senpiterno
Desde el eveto onpaint llamo a la funcion que crea el texto vertical de esta forma:
Código Delphi [-]
procedure TFEntradaSistema.GradianPaint(Sender: TObject);
begin
CreaGradian(FEntradaSistema.Gradian);
CreaTextoVertical(FEntradaSistema.Gradian,'Entrada');
end;
Respecto al crear un rectangulo donde dibujar el texto no me sirve, .....
Código Delphi [-]
Function CreaGradian(Objeto:TPaintBox):Boolean;
Var
Row, Ht: Word ;
Begin
Try Result:=False; Ht := (Objeto.ClientHeight + 255) div 256 ;
For Row := 0 to 255 do Begin
With Objeto.Canvas do begin
Brush.Color := RGB(0, 0, Row+20) ;
FillRect(Rect(0, Row * Ht, Objeto.ClientWidth, (Row + 1) * Ht));
End;
End;
Objeto.Canvas.Refresh;
Result:=True;Except On E:Exception Do
If (MensajesDeError(ErroresSistema(E), E, MsgErrorCreaGradina,False)<> Reintentar) Then Begin
Result:=False; End; End;End;
|
creo que el enfoque que le has dado no es muy correcto (si alguien cree que esoy diciendo una tarugada, que me corrija por favor
) y pudieran ser dos las situaciones por las que se pierde la transformación del texto
quiero entender que el procedimiento
GradianPain es el asignado al evento OnPaint de tu PaintBox, si es asi, esto hace que cada vez que pides que se dibuje (por algun evento, este cambia sus dimensiones varias veces, lo que posiblemente haga que otros objetos vuelvan a llamar a ese evento, y esto puede hacer que al solicitar la creación del font no tenga los recursos necesarios; por otro lado dentro del procedimiento llamas a Refresh lo que hara que se vuelva a solicitar el repintado, lo cual no necesariamente se hara de manera inmediata, tal vez esto ultimo sea lo que hace que se pierda la transformación...
yo cambiaria el enfoque, pienso que cada vez que cambias las dimensiones del control este llama a su evento OnPain, por lo que dentro de este solo debiera estar lo concerniente al dibujado interior del el, nada mas, creo que el cambio de las dimensiones lo debieras llevar a cabo desde.. no se por ejemplo desde donde lo llamas para que aparezca...
en cuanto tenga tiempo tratare de checarlo con detenimiento...
saludos...