Pergunta

Eu estou trabalhando em um editor de mapas para um jogo XNA Eu estou projetando no meu tempo livre. As peças de arte utilizadas no mapa são armazenadas em um único textura e retângulos são armazenados com coordenadas e larguras etc.

Na aplicação winforms posso adicionar segmentos seleccionando o segmento que quero de uma caixa de listagem, que é preenchida a partir da matriz de possíveis segmentos.

O problema é que eu gostaria de ser capaz de mostrar uma visualização do segmento selecionado e, uma vez que é armazenado em uma textura comum, eu não posso simplesmente definir um picturebox para exibir a imagem.

Existe uma maneira de usar a informação retângulo (.x, .y, .width, .height) para exibir somente a seção da imagem em um picturebox, ou para blit a seção para um bitmap e exibição que?

Muito obrigado

Michael Allen

Foi útil?

Solução

Você provavelmente vai querer olhar para a biblioteca GDI. Usando o objeto de imagem ou Bitmap eo Graphics.DrawImage () juntamente vai conseguir o que você está procurando.

private void DrawImageRectRect(PaintEventArgs e)
{

    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");

    // Create rectangle for displaying image.
    Rectangle destRect = new Rectangle(100, 100, 450, 150);

    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;

    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, srcRect, units);
}

Você também pode estar interessado em usar XNA dentro do seu WinForm em vez de usar PictureBoxes e GDI. Não é 100% suportado ainda, mas um tutorial sobre que pode ser encontrada aqui .

Outras dicas

Você pode usar Graphics.DrawImage () e que vai aceitar um retângulo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top