Dibujar en delphi
bueno, escribo aqui en busca de ayuda para hacer un pain en delphi y principalmente esa es la idea
de momento e intentado dibujar una linea en un image o un paintbox, lo e conseguido, pero la idea es que la linea se dibuje con forme arrastre el cursor y quede como definitiva cuando lo suelte. una cosa que observe, es que el evento onmouseup se activa al soltar cualqueir boton y necesito saber que boton se solto para que no me dibuje lineas con el otro boton del mause xD si alguien me puede ayudar, me haria un gran favor Noitam |
Bueno, no es complicado, se trata de jugar con los eventos del Mouse.
Define en la parte privada un par de variables como éstas:
Y en los eventos del Mouse del PintBox lo siguiente:
Para distinguir entre un botón y otro del mouse, verás que exixte un parámetro Button: TMouseButton que te da esa información. |
Otra idea
Yo hice un programa parecido al corel draw o al ilustrator, pero las tecnicas de dibujo son las mismas. Por que no utilizas mejor 2 Timage, uno encima de otro, el primero definelo como transparente. y utiliza las rutinas que ya te proporcionaron en la respuesta anterior, en el evento onmousedow guarda el punto de origen, en el evento onmousemove limpia el timage y traza una linea del punto original a la posiciòn del mouse, en el evento onmouseup guarda el segundo punto, ya teniendo ambos puntos , coloca el punto activo del pixel del cavans en el punto 1 y luego usa el procedimiento lineto(x,y) al punto dos
Pronto subire el programa que hice con el codigo a mi pagina, cuando lo haga te aviso. :confused: Perdona pero no tengo el codigo a la mano, asi que no recuerdo el nombre correcto de las rutinas. |
Hola a todos
Segui este hilo y mi consulta es como hacer lo mismo pero con un jpeg dado que me da como error no es un bmp, si es posible, si no tendre que convertir. Y la otra duda es que siendo bmp la imagen en un image o paintbox al arrastrar el mouse la imagen se pierde completamente y se vuelve un cuadro blanco. Necesitaria crear un bitmap para que esto no ocurra o como lo solucionaria. Saludos y Gracias Soloriv. |
como dibujar un circulo con los eventos del mouse en paintbox como se hace???... porfavor ;)
|
Cita:
Antes de nada te recomiendo que revises la Guia de estilo. Para dibujar un circulo/Elipse utilizando el código que hay arriba, puedes cambiar las dos líneas dode aparece (*1*) por éste código:
Y la línea donde pone (*2*) por esta:
|
Vale... Ahora, a ver si esto es posible con el paintBox o con cualquier otro control.
dispongo de una Tree View en la que guardo todos los cuadrados, circulos que pinto dentro del paint box Ej Dibujo1 | |-- Cuadro 1 |-- Cuadro 2 Etc.... como se puede hacer para que Seleccionando Cuadro1 o Cuadro 2 por ejemplo cambie de color en la PaintBox? es Decir saber que elemento del dibujo se ha seleccionado. |
Si estás pensando en este tipo de operaciones, la técnica de pintar directamente sobre un paintBox (o similar) tal vez no sea la más adecuada; Debería revisar éste control (TSimpleGraph); Es especial para éste tipo de cosas.
|
MMmm...
creo que no me sirve ese control. Posiblemente tuviera que redibujar la pantalla y cambiar el relleno de la forma en particular. por que tengo sus coordenadas, pero al reves?, me refiero pinchando en la forma en particular, que me dijera cual es? |
Cita:
El problema de dibujar directamente sobre el canvas, es que lo que dibujas no es un objeto en sí, sino pixels de colores. Si quieres seleccionar, modificar, mover,... los objetos que dibujas, deben ser objetos como tal y no pixels pintados. No se si me explico. Sea con este componente, con otro, o manualmente debes guardar la información completa de lo que estás dibujando, poder seleccionarlo y redibujar cuando cambias algo. Puedes hacerlo "a mano", pero este componente ya lo tiene implementado. |
Puede que si me funcione, el caso es que lo probare...
Sucede que si te encabezonas con la idea inicial que llevas.. ver a ver si tiene aplicacion... Gracias. |
La franja horaria es GMT +2. Ahora son las 06:11:27. |
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