Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Medindo "system.drawing.image"


Thiago Alencar

Pergunta

Estou com um probleminha besta aqui mas ainda não achei solucao em nenhum lugar..

vamos ao que interessa:

Dim PUWidth As Integer = _Image.Width
Dim PUHeight As Integer = _Image.Height

e.Graphics.DrawImage(_Image, XPos, YPos)

YPos += PUHeight

Agora explicando,

As variaveis (XPos e YPos), como podem ver, apontam pra onde estou trabalhando no momento.

Depois de desenhar uma imagem (que so saberei o tamanho em run-time), preciso reposicionar o meu YPos para abaixo da imagem.

O problema e' que trabalho com o PageUnit no formato Display (que se não me engano e' o padrão do Graphics), e o metodo Height e Width me retornam valores em Pixel, naturalmente causando o reposicionamento do Ypos de forma errada..

já tentei varios outros metodos (GetBounds(Drawing.GraphicsUnit.Display).Size.Height) mas mesmo assim não da certo..

alguma sugestao??

obrigado!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

É, tentei aqui também e o comportamento é estranho. O PageUnit Display, pela descrição, seria a mesma coisa que o Pixel, tanto que ambos até retornam o mesmo tamanho. Porém, quando não se especifica o tamanho da imagem a ser desenhada ela fica três vezes menor (pelo menos no teste que fiz aqui). Já quando ela é desenhada no tamanho original aí sim o YPos fica na posição certa. Ou seja, se você fizer...

Dim PUWidth As Integer = _Image.Width
Dim PUHeight As Integer = _Image.Height

e.Graphics.DrawImage(_Image, XPos, YPos, PUWidth, PUHeight)

YPos += PUHeight

... o YPos será posicionado corretamente. Porém, a imagem será desenhada em seu tamanho original.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E' fazendo isso ela não se comporta de maneira "estranha".. o que estou fazendo agora é calcular os valores "reais" do meu PageUnit por porcentagem pelo tamanho original, assim:

Dim PUWidth As Integer = (TotalLengthAvailable * Images(ImagePointer).GetWidth) / 100
Dim PUHeight As Integer = ((TotalHeightAvailable * Images(ImagePointer).GetHeight) / 100) - YPos
Onde Images() e' um ArrayList que contem valores < 100 do tanto que a imagem deve ficar dentro do contexto e depois fazer
XPos += ImagePadding
e.Graphics.DrawImage(_Image, XPos, YPos, PUWidth, PUHeight)

ai o YPos += PUHeight fica correto.

valeu,

t+!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...