Intenta hacer una ventana completa. Como un formulario de Windows. Puedes hacerlo sin dinamismo, pero como lo has implementado parcialmente, creo que obtendrás una ventana "de goma" como la de Windows.
Реter Konow: Intenta hacer una ventana completa. Como un formulario de Windows. Puedes hacerlo sin dinamismo, pero como lo has implementado parcialmente, creo que obtendrás una ventana "de goma" como la de Windows.
Los desplazamientos se hicieron por separado, se pueden aplicar a una configuración específica de la ventana, el resto (eventos, cambios en las propiedades requeridas) se hará automáticamente. Conectarlos es muy sencillo:
demos de GVision (uno de los descendientes de TVision).
Aproximadamente en los años 93-95 se podían comprar las mencionadas demos (*quien no lo sabe, el software se vendía al por menor) en la librería "House of Tech Books" de la calle Leninsky. Incluso tenía un monitor aparte donde se desplazaba la demo y podías "probar". Era genial: los carteles, los botones, las casillas de verificación/radio, y los gráficos...
pero luego compré un Zortec-C. Una caja pesada, con 5 volúmenes de documentación y algunos disquetes :-)
El mecanismo de las ventanas "de goma" se implementa inicialmente,
pero al cambiar el tamaño:
Las ventanas no deben parpadear,
debería haber 8 asas de agarre de la ventana para el cambio de tamaño - para cada lado y cada esquina.
De hecho, la ventana como entidad no está formada. Todavía no hay integridad.
Por idea, debería llegar a una opción similar:
Bueno, en general, lo has hecho bien. No lo esperaba. ))))
Continúa.
1. utilizar rectángulos y kanvasses en gran número con la dinámica, tal vez no parpadea si todo estaba en un kanvas, ya hay limitaciones de la plataforma, y dibujar todo en un kanvas no es deseable. Tal vez si sólo para traducir todo a la vez en DirectX...
2. Acabo de añadir un pequeño componente, que implementa el estiramiento. Y no hay integridad, sólo son elementos ensamblados, y no necesariamente gráficos.
¿Qué no esperabas? ¿Estiramiento? Así de fácil es para mí. Estas cosas las hago para mi proyecto, no tengo pensado crear biblioteca de controles gráficos, aunque la base para su creación es muy buena
#include <Greshnik\\\Windows_engine\\Windows_engine_base.mqh>
//Элемент, который будет изменять размер родительского окна перетаскиванием мышки//По умолчанию окошко будеи распологаться в правом нижнем углуclass cV_resizer
{
cV_object_base *_main;//Основное окноclass My_events: public iE_event_handler
{
public:
cV_object_base *_e_my;
void On_event(sEvent &event);
};
My_events ev;
public:
//Создание таблицыbool Create(
cV_object_base &parent_object,
string name=NULL
);
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void cV_resizer::My_events::On_event(sEvent &event)
{
if(event.id==CHARTEVENT_ON_PROPERTY_CHANGED_)
{
if(event.lparam==vop_position_x)
{
cV_object_base *par=_e_my.Get_parent();
long p=par.Get_property(vop_size_x).data_long;
long pos=_e_my.Get_property(vop_position_x).data_long;
long size=_e_my.Get_property(vop_size_x).data_long;
long d=pos+size-p;
par.Set_property(vop_size_x,p+d);
_e_my.Set_property(vop_position_x,par.Get_property(vop_size_x).data_long-size);
}
else
{
cV_object_base *par=_e_my.Get_parent();
long p=par.Get_property(vop_size_y).data_long;
long pos=_e_my.Get_property(vop_position_y).data_long;
long size=_e_my.Get_property(vop_size_y).data_long;
long d=pos+size-p;
par.Set_property(vop_size_y,p+d);
_e_my.Set_property(vop_position_y,par.Get_property(vop_size_y).data_long-size);
}
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+bool cV_resizer::Create(cV_object_base &parent_object,string name=NULL)
{
int width=20;
int height=20;
long width_p=parent_object.Get_property(vop_size_x).data_long;
long heigth_p=parent_object.Get_property(vop_size_y).data_long;
_main=new cV_object_base();
_main.Set_property_info(vop_size_x,width);
_main.Set_property_info(vop_size_y,height);
_main.Set_property_info(vop_position_x,width_p-width);
_main.Set_property_info(vop_position_y,heigth_p-height);
_main.Set_property_info(vop_is_movable,true);
_main.Create(parent_object);
_main.Add_event_handler(GetPointer(ev));
_main.Set_property_change_event(vop_position_x);
_main.Set_property_change_event(vop_position_y);
ev._e_my=GetPointer(_main);
returntrue;
}
1. los rectángulos y kanvasses se utilizan en gran número con la dinámica, tal vez no parpadee si todo está en un kanvas, pero ya hay limitaciones de la plataforma, y dibujar todo en un kanvas no es deseable. Tal vez si sólo para traducir todo a la vez en DirectX...
2. Acabo de añadir un pequeño componente, que implementa el estiramiento. Y no hay integridad, sólo son elementos ensamblados, y no necesariamente gráficos.
¿Qué no esperabas? ¿Estiramiento? Así de fácil es para mí:
Parpadea porque cambias el tamaño de TODO el kanvas, lo que consume recursos, pero si cambias el área de la imagen visible en el kanvas de tamaño MÁXIMO, te libras de este desagradable efecto. Es decir, se crea de antemano un kanvas del tamaño de la pantalla del monitor, se conecta la imagen a él (del mismo tamaño) y luego se "recorta". Y las funciones de redimensionamiento sólo definirán el área visible del lienzo, no lo recrearán de nuevo.
Intenta hacer una ventana completa. Como un formulario de Windows. Puedes hacerlo sin dinamismo, pero como lo has implementado parcialmente, creo que obtendrás una ventana "de goma" como la de Windows.
Lo más difícil será dibujar los botones :))
Sí, me imaginé que esa era la parte más difícil, porque no hay ninguna. ))))
Los desplazamientos se hicieron por separado, se pueden aplicar a una configuración específica de la ventana, el resto (eventos, cambios en las propiedades requeridas) se hará automáticamente. Conectarlos es muy sencillo:
En cuanto ala dificultad de crear una tabla: el motor quedó muy bien, así que crear una tabla con él no es tan difícil.
Sí, me imaginé que esa era la parte más difícil, porque no hay ninguna. ))))
Una demostración para su monitor. Para la esquina inferior derecha puedes cambiar el tamaño de la tabla
Una demostración para su monitor. Para la esquina inferior derecha puedes cambiar el tamaño de la tabla
Gracias por la demostración para mi monitor.
Y así:
pero cuando se cambia el tamaño:
Por idea, debería llegar a una opción similar:
Bueno, en general, ¡seguro que lo has hecho bien! No lo esperaba. ))))
¡Ya me acordé!
Me acordé de lo que me recuerda todo esto...
demos de GVision (uno de los descendientes de TVision).
Aproximadamente en los años 93-95 se podían comprar las mencionadas demos (*quien no lo sabe, el software se vendía al por menor) en la librería "House of Tech Books" de la calle Leninsky.
Incluso tenía un monitor aparte donde se desplazaba la demo y podías "probar". Era genial: los carteles, los botones, las casillas de verificación/radio, y los gráficos...
pero luego compré un Zortec-C. Una caja pesada, con 5 volúmenes de documentación y algunos disquetes :-)
es bueno recordarlo.
Gracias por la demostración para mi monitor.
Y así:
pero al cambiar el tamaño:
Por idea, debería llegar a una opción similar:
Bueno, en general, lo has hecho bien. No lo esperaba. ))))
1. utilizar rectángulos y kanvasses en gran número con la dinámica, tal vez no parpadea si todo estaba en un kanvas, ya hay limitaciones de la plataforma, y dibujar todo en un kanvas no es deseable. Tal vez si sólo para traducir todo a la vez en DirectX...
2. Acabo de añadir un pequeño componente, que implementa el estiramiento. Y no hay integridad, sólo son elementos ensamblados, y no necesariamente gráficos.
¿Qué no esperabas? ¿Estiramiento? Así de fácil es para mí. Estas cosas las hago para mi proyecto, no tengo pensado crear biblioteca de controles gráficos, aunque la base para su creación es muy buena
1. los rectángulos y kanvasses se utilizan en gran número con la dinámica, tal vez no parpadee si todo está en un kanvas, pero ya hay limitaciones de la plataforma, y dibujar todo en un kanvas no es deseable. Tal vez si sólo para traducir todo a la vez en DirectX...
2. Acabo de añadir un pequeño componente, que implementa el estiramiento. Y no hay integridad, sólo son elementos ensamblados, y no necesariamente gráficos.
¿Qué no esperabas? ¿Estiramiento? Así de fácil es para mí: