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

Evento OnMouseDown TImage


Guest Itamar Daniel Delbem

Pergunta

Guest Itamar Daniel Delbem

Boa tarde, estou com um problema. Estou precidando acessar um pixel em uma imagem contida em um componente TImage. Através do evento OnMouseDown do C++ builder, eu passo as coordenadas X Y para uma função que acessa o pixel onde eu cliquei. Eu consigo fazer isto sem problemas, se a propriedade Stretch do TImage estiver igual a false, más como a imagem em tamanho original fica muito grande eu preciso mudar a propriedade para Stretch = true. Só que quando eu faço isso, ao clicar como o mouse Utilizando o evento OnMouseDown, o pixel que eu acesso não corresponde ao aonde eu estou clicando na imagem. Existe uma forma de resolver ou seja clicar na imagem com a propriedade Stretch = true e acessar o pixel onde eu cliquei? Se alguém puder me ajudar ficarei muito grato.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde, estou com um problema. Estou precidando acessar um pixel em uma imagem contida em um componente TImage. Através do evento OnMouseDown do C++ builder, eu passo as coordenadas X Y para uma função que acessa o pixel onde eu cliquei. Eu consigo fazer isto sem problemas, se a propriedade Stretch do TImage estiver igual a false, más como a imagem em tamanho original fica muito grande eu preciso mudar a propriedade para Stretch = true. Só que quando eu faço isso, ao clicar como o mouse Utilizando o evento OnMouseDown, o pixel que eu acesso não corresponde ao aonde eu estou clicando na imagem. Existe uma forma de resolver ou seja clicar na imagem com a propriedade Stretch = true e acessar o pixel onde eu cliquei? Se alguém puder me ajudar ficarei muito grato.
Itamar, aparentemente seu tópico está na sessão errada, já que você usa C++ Builder e aqui tratamos de Delphi.

De qualquer modo, acho que a idéia em si, serve para os dois.

Voce não citou mas acredito que também utilize a propriedade Proportional = true, caso contrário este Stretch deixará sua imagem distorcida. Supondo isto, você precisará fazer descobrir a escala de redução que você está utilizando para então calcular corretamente a posição.

Por exemplo, uma imagem com 800x600 carregada em um image com as dimensões 200x150 (estou facilitando aqui usando a mesma proporção), a escala será de 1/4 (ou, 0,25) e deste modo ao clicar na posição 80x50 do image, voce estará na realidade clicando em uma área de imagem que será calculada pela divisão desta coordenada pela escala:

80/0,25 = 320

50/0,25 = 200

ou seja, você deveria buscar, na imagem, o pixel na posição 320x200

O problema neste seu procedimento é que como você está usando a imagem reduzida, um único pixel visível que será clicado, poderia na verdade representar 4 - levando em conta o exemplo que usei.

Veja que ser pegarmos a posição 81x51, teremos:

81/0,25 = 324

51/0,25 = 204

Então, quando se trata de "edição" de pixel, que exige precisão, a melhor opção seria usar o modo zoom (ou simplesmente o tamanho normal da imagem)

Abraços

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
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...