Fecha actual Dom Abr 28, 2024 6:00 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 6 mensajes ] 
Autor Mensaje
NotaPublicado: Vie Mar 22, 2024 8:54 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 138
Ubicación: España
Hola a los pocos que quedamos por aquí, haber si alguno de vosotros me puede ayudar, he hecho un programa en c3 y necesito poder rotar 90 o 180 grados una linea recta.

Un saludo

Fraguibo


Arriba
 Perfil  
Responder citando  
NotaPublicado: Jue Mar 28, 2024 7:26 pm 
Avatar de Usuario

Registrado: Mar Dic 27, 2005 2:58 pm
Mensajes: 77
Hola

Fraguibo escribió:
Hola a los pocos que quedamos por aquí, haber si alguno de vosotros me puede ayudar, he hecho un programa en c3 y necesito poder rotar 90 o 180 grados una linea recta.

No se que quieres decir con rotar una línea recta, si lo que pretendes es dibujarla horizontalment o verticalmente usando el método DrawLine del objeto Printer entones:

Printer:DrawLine( { 15, 60, 195, 60 } ) // Dibuja una línea horizontal a 15mm desde la izquierda, 60mm desde el borde superior y una anchura hasta 195mm.
Printer:DrawLine( { 15, 60, 15, 180 } ) // Dibuja una línea vertical a 15mm desde la izquierda, 60mm desde el borde superior y una altura hasta 180mm.


Arriba
 Perfil  
Responder citando  
NotaPublicado: Vie Mar 29, 2024 6:09 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 138
Ubicación: España
Hola Alberto Gracias por tu respuesta y por los dos ejemplos, Bueno aqui te adjunto un archivo de lo que me hace el programa automaticamente y lo que pretendo hacer es que me coloque la linea vertical que hay al centro, para que así me saque la ficha totalmente terminada, tal como esta en el archivo.

Ahora boy añadir al programa una nueva función con el ejemplo que me pones de la escritura en vertical y ya te comento.

Un saludo y gracias.

Fraguibo


Adjuntos:
Pruebas.jpg [326.41 KiB]
7 veces
Arriba
 Perfil  
Responder citando  
NotaPublicado: Sab Mar 30, 2024 2:40 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 138
Ubicación: España
Hola Alberto, perdona pero no me explique bien al decir que queria rotar una linea rexta, ya que lo que quiero es rotar una linea de texto, loe que me hace el programa es le ficha que te muestro en pruebas-1 y yo quiero añadirle una funcion que me rote 90 grados una linea de texto, para que la ficha me quede como te muestro en pruebas-2.

Gracias por tu respuesta

Fraguibo


Adjuntos:
Pruebas-2.jpg [323.65 KiB]
7 veces
Pruebas-1.jpg [215.91 KiB]
8 veces
Arriba
 Perfil  
Responder citando  
NotaPublicado: Dom Mar 31, 2024 2:45 pm 
Avatar de Usuario

Registrado: Mar Dic 27, 2005 2:58 pm
Mensajes: 77
No vas a poder rotar el texto así, para ello tendrías que crear una fuente, asignarla a la impresora, escibir con esa fuente y restaurar la fuente de la impresora, parte desde C, algoi así:

1 - Crear la fuente desde C y obtener su handle usando la función del API de Windows CreateFontIndirect, esta función lleva como parámetro una estructura tipo LOGFONT que se rellena con los valores de fuente (nombre, tamaño, estilos, etc) además de indicar en los miembros de la estructura lfEscapement y lfOrientation el valor de 2700 (270 grados * 10). Con esto ya tienes la fuente creada y rotada.

2 - Cuando quieras dibujar con esa fuente tienes que salvar la fuente actual de la impresora, asignar esta creada, dibujar y restaurar la fuente de la impresora que tenía, desde PRG, algo así:
/* Cambiamos la fuente actual salvando la que tiene. */
nFuenteOriginal := SelectObject( Printer:Handle, nFuenteRotada )
Printer:DrawText( "Texto", { nX1, nY1, nX2, nY2 } )
Printer:DrawText( "Otro Texto", { nX1, nY1, nX2, nY2 } )
/* Restauramos la fuente inicial. */
SelectObject( Printer:Handle, nFuenteOriginal )

3- Al terminar el documento, destruir la fuente que create al principio con la función DeleteObject( nFuenteRotada ), desde PRG.

Como ves es no es complicado pero hay que trabajar con C una parte.


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mar Abr 23, 2024 12:55 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 138
Ubicación: España
Hola Alberto;
Aqui te adjunto una función que he creado en C++ para rotar una línea de texto, pero C3 no me la reconoce, si tienes tiempo mira haber si he cometido algún error en el código o he omitido alguna instrucción.

Un saludo y gracias por tu ayuda.

Fraguibo


Adjuntos:
Girar Texto.txt [2.76 KiB]
3 veces
Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 6 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron