Ir al contenido


Foto

Dibujar, mover y redimensionar figuras sobre un TPaintbox


  • Por favor identifícate para responder
22 respuestas en este tema

#1 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 08 octubre 2010 - 04:23

Pues el titulo lo dice todo, este es un ejemplo de como dibujar, mover y redimensionar figuras (cuadrados, elipses, fotos, etc ...) sobre un TPaintbox.

PD: Probar a  poner este código en el OnCreate del formulario y veréis como se consigue un efecto muy bueno:


delphi
  1.   TransparentColor:= TRUE;
  2.   TransparentColorValue:= pbMain.Color;
  3.   pbMain.Canvas.Pen.Width:= 5;
  4.   WindowState:= wsMaximized;


Archivos adjuntos


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 octubre 2010 - 04:40

:D :D :D, tramposo, me la hiciste, caí como un bobo :p

Muy bueno amigo (y)

Salud OS
  • 0

#3 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 08 octubre 2010 - 04:43

:D :D :D, tramposo, me la hiciste, caí como un bobo :p

Muy bueno amigo (y)

Salud OS


¿En que hice trampa?
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 octubre 2010 - 04:55

Lo mismo me lo pregunto, jejeje esta muy bueno el codigo...  Justo necesitaba algo asi
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 octubre 2010 - 05:01


:D :D :D, tramposo, me la hiciste, caí como un bobo :p

Muy bueno amigo (y)

Salud OS


¿En que hice trampa?


Pues haces invisible la forma y no se ve, y yo buscandola por cielo tierra y mar y no la encontraba :p :D :D :D

Salud OS
  • 0

#6 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 08 octubre 2010 - 05:19



:D :D :D, tramposo, me la hiciste, caí como un bobo :p

Muy bueno amigo (y)

Salud OS


¿En que hice trampa?


Pues haces invisible la forma y no se ve, y yo buscandola por cielo tierra y mar y no la encontraba :p :D :D :D

Salud OS


No, no la hago invisible. Si te fijas el menu aparece en la parte superior de la pantalla, y el boton sigue apareciendo en la barra de tareas. Y cuando añades una forma, estas se dibujan por encima de las otras ventanas

Archivos adjuntos


  • 0

#7 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 octubre 2010 - 05:57

Hola
Siempre me gusta ver el codigo de seoane.
Lo que me gustaria es poder entenderlo algun dia. (y)
Muy bueno, eso de poder escribir y hacer lo que sea en la pantalla es impresionante.
Pero lo que mas me llama la atencion es el tamaño del codigo. (b)
Saludos
  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 octubre 2010 - 08:04

Muy buen code amigo,

Esto da algunas ideas para el desarrollo de un Paint... como para empezar.

Saludos,
  • 0

#9 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 08 octubre 2010 - 08:11

Muy buen aporte seoane... gracias :)


Saludos!
  • 0

#10 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 14 octubre 2010 - 08:01

Hola, esta muy bueno el codigo, de hecho estoy haciendo una adaptacion para que imprima un codigo de barra a la imagen, lo que hago es utilizar una fuente de codigo de barra y la escribo con el outtext, pero la imagen debe quedar midiendo 8.5 * 5.3  pero siempre la guarda mas del doble de eso, hay algun metodo para controlar el tamaño de la imagen final?

Gracias  :)
  • 0

#11 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 14 octubre 2010 - 03:33

Hola, esta muy bueno el codigo, de hecho estoy haciendo una adaptacion para que imprima un codigo de barra a la imagen, lo que hago es utilizar una fuente de codigo de barra y la escribo con el outtext, pero la imagen debe quedar midiendo 8.5 * 5.3  pero siempre la guarda mas del doble de eso, hay algun metodo para controlar el tamaño de la imagen final?

Gracias  :)


No entiendo ¿esta dibujando el código de barras en el programa que pongo de ejemplo o en otro? ¿donde te queda pequeño, dentro del propio programa, al imprimirlo, ala exportarlo ...?
  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 15 octubre 2010 - 07:01

Saludos, tome trozos de codigo del ejemplo,

Para cargar la imagen:



delphi
  1. with TOpenDialog.Create(nil) do
  2.   try
  3.     Filter:= 'Archivos de imagen|*.bmp;*.ico;*.jpg';
  4.     if Execute then
  5.     begin
  6.       if not Assigned(Fondo) then
  7.           Fondo:= TPicture.Create;
  8.       try
  9.         Fondo.LoadFromFile(Filename);
  10.         Dibujar;
  11.       except
  12.         FreeAndNil(Fondo);
  13.       end;
  14.     end;
  15.   finally
  16.     Free;
  17.   end;



Para escribir el serial:



delphi
  1. //Dibuja la fuente
  2.   if cTexto <> '' then
  3.   begin
  4.       pb.Canvas.Font.Name := cFuente;
  5.       pb.Canvas.Font.Size := nTamayo;
  6.       pb.Canvas.Brush.Color := clWhite;
  7.       pb.Canvas.TextOut(StrtoInt(lbX.Caption), StrtoInt(lby.Caption), cTexto);
  8.   end;



Para Grabar la Imagen



delphi
  1. var
  2.   Buffer: TBitmap;
  3.   j,k: integer;
  4. begin
  5.   with TSaveDialog.Create(nil) do
  6.   try
  7.     Filter:= 'Archivos bmp|*.bmp';
  8.     if Execute then
  9.     begin
  10.       if Fondo <> nil then
  11.       begin
  12.         j:= Fondo.Width;
  13.         k:= Fondo.Height;
  14.       end else
  15.       begin
  16.         j:= 0;
  17.         k:= 0;
  18.       end;
  19.       Buffer:= TBitmap.Create;
  20.       try
  21.         Buffer.Canvas.Brush.Color:= pb.Canvas.Brush.Color;
  22.         Buffer.Width:= j + 1;
  23.         Buffer.Height:= k + 1;
  24.         if Fondo <> nil then
  25.           Buffer.Canvas.Draw(0,0,Fondo.Graphic);
  26.  
  27.         //Dibuja la fuente
  28.         if cTexto <> '' then
  29.         begin
  30.             Buffer.Canvas.Font.Name := cFuente;
  31.             Buffer.Canvas.Font.Size := nTamayo;
  32.             Buffer.Canvas.TextOut(StrtoInt(lbX.Caption), StrtoInt(lby.Caption), cTexto);
  33.         end;
  34.  
  35.         Buffer.SaveToFile(Filename);
  36.       finally
  37.         Buffer.Free;
  38.       end;
  39.     end;
  40.   finally
  41.     Free;
  42.   end;
  43. end;



El asunto es que cuando quiero grabar la imagen no me respeta el tamaño original si no que lo graba mucho mas grande,
  • 0

#13 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 15 octubre 2010 - 07:42

Yo acabo de probar tu  código y me lo graba con el mismo tamaño que la imagen de fondo ¿no es eso lo que quieres?
  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 15 octubre 2010 - 08:49

Bueno amigo, realmente es tu codigo  :D

Si eso es lo que quiero, pero me altera el tamaño, probare de nuevo a ver si es que hago algo mal. Gracias
  • 0

#15 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 20 octubre 2010 - 01:32

Hola a todos

Amigo Seoane, el compactado lo descargo bien, pero al abrirlo me da error de final de archivo inesperado,y no puedo descomprimirlo, faltan archivos debido al error

Pudieras subirlo de nuevo?
  • 0

#16 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 20 octubre 2010 - 02:48

Pudieras subirlo de nuevo?


El archivo esta bien, acabo de comprobarlo. A lo mejor lo descargaste mal la primera vez y cuando volviste a intentar descargarlo ya lo tenias mal en la cache de tu navegador. Prueba a eliminar los ficheros temporales y descargarlo de nuevo
  • 0

#17 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 21 octubre 2010 - 12:03


Pudieras subirlo de nuevo?


El archivo esta bien, acabo de comprobarlo. A lo mejor lo descargaste mal la primera vez y cuando volviste a intentar descargarlo ya lo tenias mal en la cache de tu navegador. Prueba a eliminar los ficheros temporales y descargarlo de nuevo


Ok, ya lo pude descargar
Al parecer fue eso mismo lo que sucedió
  • 0

#18 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 21 octubre 2010 - 12:10

Ayuda de nuevo

Al intentar ejecutar el programa me sale este error
Donde obtengo el componente que falta?

Archivos adjuntos


  • 0

#19 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 21 octubre 2010 - 12:29

Hola JoAnCa,

Ese aviso de "error" no es por un componente... es el aviso de que hay algunas propiedades que no tienen tus componentes. Es por un tema de versión de Delphi. En D7 y siguientes se han añadido algunas nuevas propiedades a algunas clases y como tu tienes una versión inferior te da un aviso de que no las encuentra.
Con ignorarlas bastará. No deberías tener mayores problemas

Al menos con esas propiedades ExplicitLeft... no se para que se utilizarán pero al menos cuando he visto y probado código de otros de versiones superiores a D6 con ignorarlas no tuve inconvenientes.

Saludos,
  • 0

#20 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 21 octubre 2010 - 12:38

Es problema de versión Delphi puede ser que seoane lo hizo con D2007 y tú tienes D7.

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.