Tente fazer uma janela completa. Como um formulário Windows. Você pode fazê-lo sem dinamismo, mas como você o implementou parcialmente, acho que terá uma janela de "borracha" semelhante à de uma janela Windows.
Реter Konow: Tente fazer uma janela completa. Como um formulário Windows. Você pode fazer isso sem dinamismo, mas como você o implementou parcialmente, acho que você terá uma janela de "borracha" semelhante à de uma Janela.
Os pergaminhos foram feitos separadamente, eles podem ser aplicados a uma configuração de janela específica, o resto (eventos, mudanças nas propriedades requeridas) será feito automaticamente. Conectá-los é muito simples:
demos da GVision (um dos descendentes da TVision).
Em cerca de 93-95 você poderia comprar as demos acima mencionadas (*que não sabe - o software foi vendido no varejo) na livraria "House of Tech Books" na Leninsky Street. Inclusive tinha um monitor separado onde a demonstração estava rolando, e você podia "tentar". Foi legal - os letreiros, os botões, as caixas de seleção/rádio e os gráficos...
mas depois comprei um Zortec-C. Uma caixa pesada, com 5 volumes de documentação e algumas disquetes :-)
O mecanismo de janelas "emborrachadas" é inicialmente implementado,
mas quando você redimensiona:
As janelas não devem piscar,
deve haver 8 pegas de janela para redimensionamento - para cada lado e cada canto.
Na verdade, a janela como entidade não é formada. Ainda não há integridade.
Por idéia, você deve chegar a uma opção semelhante:
Bem, no geral, você certamente se saiu bem! Eu não esperava isso. ))))
Continuar.
1. Utilizou retângulos e kanvasses em grande número com dinâmica, talvez não piscar se tudo estivesse em uma única tela, já existem limitações da plataforma, e desenhar tudo em uma única tela não é desejável. Talvez se apenas para traduzir tudo de uma só vez no DirectX.
2. Acabei de acrescentar um pequeno componente, que implementa o trecho. E não há integridade, são apenas elementos montados, e não necessariamente gráficos.
O que você não esperava? Alongamento? Para mim é tão fácil quanto isso. Eu faço estas coisas para meu projeto, não tenho planos de criar uma biblioteca de controles gráficos, embora a base para sua criação seja muito boa
#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. Retângulos e Kanvasses são utilizados em grandes quantidades com dinâmica, talvez não piscaria se tudo estivesse em uma única tela, mas já existem limitações de plataforma, e desenhar tudo em uma única tela não é desejável. Talvez se apenas para traduzir tudo de uma só vez no DirectX.
2. Acabei de acrescentar um pequeno componente, que implementa o trecho. E não há integridade, são apenas elementos montados, e não necessariamente gráficos.
O que você não esperava? Alongamento? Para mim é tão fácil quanto isso:
Ela pisca porque você muda o tamanho do Kanvas INTEGRAL, que consome recursos, mas se você mudar a área de imagem visível em Kanvas de tamanho MÁXIMO, você se livra deste efeito desagradável. Ou seja, você cria com antecedência uma tela do tamanho de um monitor, conecta a imagem a ele (do mesmo tamanho) e depois "corta" a imagem. E as funções de redimensionamento apenas definirão a área visível da tela, não a recriarão novamente.
Tente fazer uma janela completa. Como um formulário Windows. Você pode fazer isso sem dinamismo, mas como você o implementou parcialmente, acho que você terá uma janela de "borracha" semelhante à de uma Janela.
A parte mais difícil será desenhar os botões :))
Sim, imaginei que essa fosse a parte mais difícil, porque não há nenhuma. ))))
Os pergaminhos foram feitos separadamente, eles podem ser aplicados a uma configuração de janela específica, o resto (eventos, mudanças nas propriedades requeridas) será feito automaticamente. Conectá-los é muito simples:
Em relaçãoà dificuldade de criar uma mesa: o motor funcionou muito bem, portanto, criar uma mesa usando-a não é tão difícil assim.
Sim, achei que essa fosse a parte mais difícil, porque não há nenhuma. ))))
Uma demonstração para seu monitor. Para o canto inferior direito, você pode redimensionar a mesa
Uma demonstração para seu monitor. Para o canto inferior direito, você pode redimensionar a mesa
Obrigado pela demonstração para o meu monitor.
E assim:
mas ao redimensionar:
Por idéia, você deve chegar a uma opção semelhante:
Bem, no geral, você certamente se saiu bem! Eu não esperava isso. ))))
Eu me lembrei !
Lembrei-me do que tudo isso me lembra...
demos da GVision (um dos descendentes da TVision).
Em cerca de 93-95 você poderia comprar as demos acima mencionadas (*que não sabe - o software foi vendido no varejo) na livraria "House of Tech Books" na Leninsky Street.
Inclusive tinha um monitor separado onde a demonstração estava rolando, e você podia "tentar". Foi legal - os letreiros, os botões, as caixas de seleção/rádio e os gráficos...
mas depois comprei um Zortec-C. Uma caixa pesada, com 5 volumes de documentação e algumas disquetes :-)
bom de lembrar.
Obrigado pela demonstração para o meu monitor.
E assim:
mas quando você redimensiona:
Por idéia, você deve chegar a uma opção semelhante:
Bem, no geral, você certamente se saiu bem! Eu não esperava isso. ))))
1. Utilizou retângulos e kanvasses em grande número com dinâmica, talvez não piscar se tudo estivesse em uma única tela, já existem limitações da plataforma, e desenhar tudo em uma única tela não é desejável. Talvez se apenas para traduzir tudo de uma só vez no DirectX.
2. Acabei de acrescentar um pequeno componente, que implementa o trecho. E não há integridade, são apenas elementos montados, e não necessariamente gráficos.
O que você não esperava? Alongamento? Para mim é tão fácil quanto isso. Eu faço estas coisas para meu projeto, não tenho planos de criar uma biblioteca de controles gráficos, embora a base para sua criação seja muito boa
1. Retângulos e Kanvasses são utilizados em grandes quantidades com dinâmica, talvez não piscaria se tudo estivesse em uma única tela, mas já existem limitações de plataforma, e desenhar tudo em uma única tela não é desejável. Talvez se apenas para traduzir tudo de uma só vez no DirectX.
2. Acabei de acrescentar um pequeno componente, que implementa o trecho. E não há integridade, são apenas elementos montados, e não necessariamente gráficos.
O que você não esperava? Alongamento? Para mim é tão fácil quanto isso: