Levaria muito tempo para apagar todo o plano de fundo, construir e pintar tudo de novo
Não tanto assim. A construção pode levar muito tempo.
Mantemos o estado na memória (posição dos elementos, sua cor etc.) e, se precisarmos, por exemplo, mover um elemento, alteramos suas coordenadas, apagamos a tela e desenhamos um novo estado. Visualmente, parece muito rápido, mesmo com muitos elementos)
Isso não está funcionando porque meu Canvas está em tela cheia. É como um gráfico de ticks, mas é muito demorado apagar todo o plano de fundo, construir e pintar tudo de novo, então preciso mover o conteúdo para a esquerda (por exemplo, 8 pixels) e desenhar apenas os novos 8 pixels (8 px na direção x e altura total) com novos dados. Tentei mover o Canvas 8 px para a esquerda com MoveCanvas e isso está funcionando, mas não consigo redimensioná-lo de forma que 8 px de largura sejam removidos da esquerda e 8 px sejam adicionados à direita. Espero que você entenda...
Mighty7:
Isso não está funcionando porque meu Canvas está em tela cheia. É como um gráfico de ticks, mas é muito demorado apagar todo o plano de fundo, construir e pintar tudo de novo, então preciso mover o conteúdo para a esquerda (por exemplo, 8 pixels) e desenhar somente os novos 8 pixels (8 px na direção x e altura total) com novos dados. Tentei mover o Canvas 8 px para a esquerda com MoveCanvas e isso está funcionando, mas não consigo redimensioná-lo de forma que 8 px de largura sejam removidos da esquerda e 8 px sejam adicionados à direita. Espero que você entenda...
Ok, pronto. Baixe a versão 1.42. Mas você precisa controlar o redimensionamento vertical.
Pronto, já está. Faça o download da versão 1.42 para você. Mas você precisa controlar a alteração na escala vertical.
void ShiftCanvas(constint _shift=-1, uint bckgr = 0x00FFFFFF) { // deslocar a tela inteira para a esquerda (x é um valor negativo) ou para// à direita (x é um valor positivo). A tela em si permanece no lugar, mas todos os pixels são deslocados. O bckgr é // a cor com a qual a faixa recém-criada é preenchida à esquerda ou à direita, dependendo da direção do deslocamento.if (_shift==0) return;
int _Shift = Fabs(_shift);
if (_Shift>=m_width) { ArrayInitialize(m_pixels,bckgr); return;}
int start = (_shift>0)?0:-_shift;
int count = m_width-_Shift;
int offset= (_shift>0)?0:count;
for (; start<m_height*m_width; start+=m_width, offset+=m_width) {
ArrayCopy(m_pixels,m_pixels,start+_shift,start,count);
ArrayFill(m_pixels,offset,_Shift,bckgr);
}
}
Funciona como um charme, mas para ficar completo, é possível implementar um Shift também no eixo y (norte/sul)? Preciso que ele role/desloque nessas direções também.
Ele funciona como um charme, mas, para ficar completo, é possível implementar um Shift também no eixo y (norte/sul)? Preciso que ele role/desloque também nessas direções.
Ele funciona como um charme, mas, para ficar completo, é possível implementar um Shift também no eixo y (norte/sul)? Preciso que ele role/desloque também nessas direções.
Levaria muito tempo para apagar todo o plano de fundo, construir e pintar tudo de novo
Não tanto assim. A construção pode levar muito tempo.
Mantemos o estado na memória (posição dos elementos, sua cor etc.) e, se precisarmos, por exemplo, mover um elemento, alteramos suas coordenadas, apagamos a tela e desenhamos um novo estado. Visualmente, parece muito rápido, mesmo com muitos elementos)
Isso não está funcionando porque meu Canvas está em tela cheia. É como um gráfico de ticks, mas é muito demorado apagar todo o plano de fundo, construir e pintar tudo de novo, então preciso mover o conteúdo para a esquerda (por exemplo, 8 pixels) e desenhar apenas os novos 8 pixels (8 px na direção x e altura total) com novos dados. Tentei mover o Canvas 8 px para a esquerda com MoveCanvas e isso está funcionando, mas não consigo redimensioná-lo de forma que 8 px de largura sejam removidos da esquerda e 8 px sejam adicionados à direita. Espero que você entenda...
Isso não está funcionando porque meu Canvas está em tela cheia. É como um gráfico de ticks, mas é muito demorado apagar todo o plano de fundo, construir e pintar tudo de novo, então preciso mover o conteúdo para a esquerda (por exemplo, 8 pixels) e desenhar somente os novos 8 pixels (8 px na direção x e altura total) com novos dados. Tentei mover o Canvas 8 px para a esquerda com MoveCanvas e isso está funcionando, mas não consigo redimensioná-lo de forma que 8 px de largura sejam removidos da esquerda e 8 px sejam adicionados à direita. Espero que você entenda...
Ok, pronto. Baixe a versão 1.42.
Mas você precisa controlar o redimensionamento vertical.
Pronto, já está. Faça o download da versão 1.42 para você.
Mas você precisa controlar a alteração na escala vertical.
Muito bom. Muito obrigado.
Sem problemas 😊
Funciona como um charme, mas para ficar completo, é possível implementar um Shift também
no eixo y (norte/sul)? Preciso que ele role/desloque nessas direções também.
Ele funciona como um charme, mas, para ficar completo, é possível implementar um Shift também
no eixo y (norte/sul)? Preciso que ele role/desloque também nessas direções.
OK. Eu farei isso.
Ele funciona como um charme, mas, para ficar completo, é possível implementar um Shift também
no eixo y (norte/sul)? Preciso que ele role/desloque também nessas direções.
Feito
ver 1.43
getan
veja 1.43
Absolutamente brilhante. Muito obrigado.
Edit: x=-1,y=0 não está se deslocando, portanto não está funcionando corretamente.
Absolutamente brilhante. Muito obrigado.
Edit: x=-1,y=0 não está se deslocando, portanto não está funcionando corretamente.
Obrigado. Corrigido.
Obrigado. Corrigido.
Tenho que agradecer. Agora está perfeito. Melhor trabalho.