Cuestión : Cualquie cuadro a la BITMAP

¿Hola, el

What es el mejores procedimiento/función para transformar cualquier cuadro (.jpg, .png, etc) para trazar una correspondencia de bits con o sin la determinación de las dimensiones?

Regards,
Carlos
class= del

Respuesta : Cualquie cuadro a la BITMAP

En versiones de Windows más adelante entonces Win95, usted puede subclase un control de corregir a
interceptar el mensaje de WM_CTLCOLOREDIT (para TEdit, estaría
CN_CTLCOLOREDIT en lugar de otro) y vuelven un cepillo que se cree de una BITMAP.
Usted puede entonces dibujar una BITMAP de cualquier tipo de exhibición del progreso usted quiere.
Aquí está un ejemplo simple:

TForm1 = clase (TForm)
publicado
Edit1: TEdit;
Timer1: TTimer;
procedimiento FormCreate (remitente: TObject)
procedimiento Timer1Timer (remitente: TObject);
privado
OldWndProc: TWndMethod;
procedimiento EditWndProc (mensaje del var: TMessage);
extremo;

procedimiento TForm1.FormCreate (remitente: TObject);
comenzar
OldWndProc: = Edit1.WindowProc;
Edit1.WindowProc: = EditWndProc;
extremo;

procedimiento TForm1.EditWndProc (mensaje del var: TMessage);
var
bmp: TBitmap;
r: TRect;
oldRight: Número entero;
comenzar
si Message.Msg = CN_CTLCOLOREDIT después
comenzar
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (Message.WParam, TRANSPARENTES);

bmp: = TBitmap.Create;
intento
r: = Edit1.ClientRect;
bmp. Anchura: = (r.Right - r.Left);
bmp. Altura: = (r.Bottom - r.Top);

si Edit1.Tag > 0 entonces
comenzar
oldRight: = r.Right;
r.Right: = r.Left + ((r.Right - r.Left) *
(Extendido ()/100 de Edit1->Tag);

bmp. Canvas.Brush.Color: = clAqua;
bmp. Canvas.FillRect (r);

r.Left: = r.Right;
r.Right: = oldRight;
extremo;

bmp. Canvas.Brush.Color: = Edit1.Color;
bmp. Canvas.FillRect (r);

Message.Result: = Windows.CreatePatternBrush (bmp. Manija);
finalmente
bmp. Libre;
extremo;

Salida;
extremo;

OldWndProc (mensaje);
extremo;

procedimiento TForm1.Timer1Timer (remitente: TObject);
comenzar
// I Timer1.Interval determinados a 50ms…

si >= 100 de Edit1.Tag entonces
Edit1.Tag: = 0

Edit1.Tag: = Edit1.Tag + 1;

Edit1.Invalidate;
extremo;
Otras soluciones  
 
programming4us programming4us