Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Kelianosevis

Manipulação de Imagem num Canvas (Windows 8 C#)

Mensagens Recomendadas

Kelianosevis

Estou a desenvolver em Windows 8 c# um programa para fazer manipulação de imagens, que lê um ficheiro xml com a localização das imagens, carrega as imagens onde depois é possível arrastá-las num Canvas, e de seguida grava novamente para xml já com as coordenadas actualizadas.

No entanto estou com um erro: Após se inserir as imagens todas no canvas, quando se tenta mover uma imagem (a não ser que seja a última a ser inserida), a seleção da imagem é feita na imagem correcta, no entanto a imagem que se move é a última a ser inserida na aplicação. Se se mover a última, tudo funciona perfeitamente.

O download da aplicação pode ser feito aqui: https://skydrive.live.com/?cid=27485e65d2d2bbe4&id=27485E65D2D2BBE4!450

O Fluxo de execução do código é clica-se no Load image para ir buscar o XML ao disco. Clica-se Add images para adicionar as imagens ao canvas, onde cada uma delas é manipulável (se se testar inserir uma de cada vez, consegue-se na perfeição movê-las). O Save Images, depois de fazer a tal manipulação pretendida nas imagens, guarda a informação no XML onde se fez load.

Estou a fazer a manipulação de imagens através disto:

image.ManipulationMode = Windows.UI.Xaml.Input.ManipulationModes.All;
image.Manipulationstarting += new ManipulationstartingEventHandler(Image_Manipulationstarting);
image.Manipulationstarted += new ManipulationstartedEventHandler(Image_Manipulationstarted);
image.ManipulationDelta += new ManipulationDeltaEventHandler(Image_ManipulationDelta);
image.ManipulationCompleted += new ManipulationCompletedEventHandler(Image_ManipulationCompleted);
image.ManipulationInertiaStarting += new ManipulationInertiaStartingEventHandler(Image_ManipulationInertiaStarting);
InitImageManipulationTransforms(image);

No Manipulationstarting quando se clica na imagem, a aplicação vai "selecionar" (por 4 linhas que formam um quadrado) à volta da imagem.

No ManipulationDelta quando se arrasta a imagem, soma a deslocação na imagem e das 4 linhas relativas à imagem em questão.

No ManipulationComplete quando largas o botão do rato e adiciona na lista das imagens todos os pontos que foram deslocados e remove as 4 linhas da imagem.

Eu pensei em criar um evento que me fizesse isso automaticamente, no entanto não o sei fazer, nem consigo encontrar nada que me ajude a fazer isso. Encontrei isto, mas não funciona para em .Net4.5 porque não existem os eventos que aí se usam: http://stackoverflow.com/questions/4991536/faking-wpf-manipulation-events

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.