Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2004
mikexxi2 mikexxi2 is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
mikexxi2 Va por buen camino
Unhappy Imagenes elaboradas

Hola.
Estoy desarrollando un simulador de elementos electricos industriales, lo que quiero es poder insertar en una plantilla los elementos que el usuario vaya escogiendo, algo asi como PSpice (Simulador de electronica), bueno mi problema es que he visto como insertar objetos sencillos como circulos o elipses y modificarlos, pero las imagenes a insertar son mas elaboradas (Transformadores, generadores, lineas, capacitores etc).
He visto todos los hilos de este foro y me han ayudado mucho, tengo una idea cada vez mas clara de lo que hare, pero tengo algunas dudas, para empezar.
como puedo hacer para insertar estas imagenes?, lo hago insertando un JPG o algo similar? o tengo que hacer funciones que dibujen las figuras cada que se inserte una en la plantilla?.
Ojala me puedan orientar, puesto que el resto del proyecto esta muy avanzado pero estoy atorado con esta parte.
Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 19-12-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Yo usaría JPGs, para no tener que "repintar" todo el área de trabajo cada vez que se añade un elemento.

Normalmente este tipo de programas traen un archivo de Librerias de componentes, dentro de ese archivo está guardado:
- el icono pequeño (para mostara en una barra de herramientas)
- El icono grande (para mostrar en el área de trabajo del usuario)
- Puntos de Enlaces de entrada y de salida (que el usuario puede conectar con otros elementos)
(manteniendo una lista con los componentes que se permiten interconectar con él ¿?¿?)
- Propiedades Adicionales de ese objeto

En mi humilde opinión yo crearía 2 Clases, una para los componentes ( transistores, lineas, etc) con la información anterior y otra clase Maestra para administrarlos. Ya que todos los componentes tendrían el mismo comportamiento:
- Situación en el área de trabajo
- Poder moverlos en el area de trabajo
- poder Interconectarlos
- Mostrar las propiedades.

De esta forma al conectar con un cable 2 componentes, la Clase Maestra podría Permitir o No permitir que se conecten , y "sugerir" al usuario el punto de enlace correcto.

Si el usuario tiene seleccionado la herramienta "cable" y la posición actual del raton está cerca de un punto de enlace, cambiar el puntero del ratón, para hacer notar que su conexión es posible.

SizerMover de las JVCL o de las Trivials, te permiten mover un componente en el área de trabajo

Las JVCL tienen un componente como la barra de Outlook, así puedes agrupar los distintos componentes en la barra de herramientas por categorias.

En fin, suerte!!
Responder Con Cita
  #3  
Antiguo 19-12-2004
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Lightbulb Imágenes elaboradas

Cita:
Empezado por mikexxi2
como puedo hacer para insertar estas imagenes?, lo hago insertando un JPG o algo similar? o tengo que hacer funciones que dibujen las figuras cada que se inserte una en la plantilla?.
Hola mikexxi2?

Mi recomendación es la siguiente:

Para el tipo de aplicación que estás desarrollando deberías de utilizar algún formato de vectores como WMF (Windows Meta File).

Este formato está diseñado para manejar eficientemente figuras geométricas, líneas y tipos de letra. (en algunos casos también se mezclan con mapas de bits)

La ventaja de utilizar este formato es que solamente se guardan las coordenadas y parámetros importantes para la creación de cada elemento (líneas, círculos, polígonos, etc.), además cuando cambias la escala o haces un zoom obtienes un mejor resultado visualmente ya que cada figura es recalculada a partir de sus parámetros evitando que se vean pixeladas.

Otra importante ventaja es que se aprovecha al máximo la resolución de la impresora.

Nota: Los formatos Raster (mapas de bits) como JPG, solamente son útiles cuando se trata de fotografías o imágenes que no se pueden calcular por medio de coordenadas y parámetros sencillos; su principal desventaja es la resolución, considero que obtendrías un resultado bastante desagradable al escalar las figuras si las almacenas en JPG.

Espero que el consejo te sea útil.
Responder Con Cita
  #4  
Antiguo 19-12-2004
<Sergio> <Sergio> is offline
Miembro
 
Registrado: sep 2004
Posts: 72
Poder: 20
<Sergio> Va por buen camino
Bueno lo que dice HECTOR es verdad: necesitarías unos JPEG de buena calidad y resolución. Además que un mapa de bits de alta resolución siempre va descomprimido en RAM ocupando una barbaridad de espacio.

Eso si: el resultado puede ser muy agradable en .jpeg a costa de mucha RAM y CPU con un buen algoritmo bicúbico para escalar imágenes. Podría parecer que es más fácil usar JPEG, pero no lo es y especialmente en tu caso por que lo que quieres realizar no es una composición de imágenes, es netamente vectorial.

Eso de no repintar toda el area de trabajo es tema de optimización, pero como generalmente en ese tipo de aplicación todo el tiempo se cambia de escala haciendo zoom a diestra y siniestra no vale la pena el esfuerzo de optimizar para no repintar algo que al primer click de ratón en zoom ya no será válido.

Utiliza una "superficie" para pintar en RAM (un Tbitmap de tipo device independet bitmap para que no use memoria de video en este caso eso sólo perjudicaría). Teniendo esa imagen lista repintas en pantalla cuando sea necesario. NO BORRES OBJETOS "PINTANDOLO" en otro color, directamente repinta todo menos el objeto borrado en RAM y luego lo pasas a video cuando esté listo (una llamada a repaint, si tu bitblt(), ve en la ayuda como usar este comando que es más directo, a video está en el onpaint.

Al momento de cambiar de escala tendrías que repintar toda tu superficie, pero aún así es más rápido "pintar" primero en una superficie en RAM y luego pasar el resultado final a memoria de video (pintando en el canvas de un tpaintbox por ejemplo) sólo cuando es necesario (cuando sucede el evento onpaint).

Finalmente prueba con Tbirmats a 8, 16 y 24 bits por pixel a ver cual te da menos tiempo de CPU, muy probablemente el de 8bits por baja cantidad de transferencia de memoria. Como son gráficos vectoriales (sin efectos de renderizado) 256 colores son más que suficientes.
Responder Con Cita
  #5  
Antiguo 21-12-2004
mikexxi2 mikexxi2 is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
mikexxi2 Va por buen camino
gracias

Muchisimas gracias por responder, me doy cuenta que este pedazo del proyecto va a ser el mas pesado y tardado de todo pero eso lo hace emocionante. Me falta mucho por aprender, voy a analizar y a ir aplicando lo que me aconsejan, y les aviso.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:40:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi