Pergunta

Estou trabalhando em uma instalação de 'previsão de impressão' para mostrar uma visão geral de um slide com matrizes retangulares de manchas de amostra.

Os slides normalmente medem 25 x 75 mm e as amostras de ponto têm tipicamente 0,1 mm de diâmetro. Geralmente, há um espaço de 2 mm em torno do perímetro do slide, onde nenhum ponto é impresso.

A distância entre os pontos (arremessos) é precisa para 0,01 mm. Pits de 0,20 e 0,29 mm, por exemplo, precisariam se diferenciar nos pixels. Representando os pontos em si, 100% de precisão provavelmente não é crucial nesta fase, desde que os pontos sejam visíveis e não se sobreponham.

Agradeceria conselhos sobre quais técnicas usarem para criar uma representação de bitmap do slide/spots e ver o layout do slide usando níveis arbitrários de ampliação.

Isso não precisa ser sofisticado - uma representação 1: 1 mais uma ampliação menor e maior para começar. Provavelmente não posso aumentar o zoom muito, pois os pontos se tornarão pequenos demais para serem representados.

Para magnificações maiores, provavelmente também precisarei saber sobre a implementação dos controles de rolagem horizontal / vertical, mas abordarei isso mais tarde.

Gostaria de descobrir quaisquer técnicas de programação e escala que eu deveria estar ciente para implementar adequadamente uma instalação de zoom. Recentemente, eu tocei com a função Stretchbt para alterar os tamanhos das imagens e parece bom, no entanto, qualquer outra informação relevante seria útil.

Felicidades.

Foi útil?

Solução

Vamos começar do começo:

  • Por que você não está usando :: AfxprintPreview () e o restante das instalações de visualização de impressão do MFC?

  • 'Slides' e 'Spots' são específicos para o seu setor, eu acho - eles são relevantes para a pergunta ou é apenas para ilustração?

  • Stretchblt () não vai fazer muito bem, porque só permitirá que você faça 'zoom' no nível de pixels, o que você precisa é desenhar uma certa parte do seu controle com um nível mais alto de precisão. Mesmo se você não usar o material de visualização do MFC Print, dê uma olhada para ver como isso pode ser feito.

  • O controle do Windows possui toda a funcionalidade necessária para rolar e dimensionar. Eles estão no contexto do dispositivo: setWindowExt (), setViewPortExt (), setViewportRg () etc. Procure em 'funções de coordenadas' da página 'Membros do CDC' do MSDN. Dito isto, uma vez implementei o zoom e a rolagem 'manualmente', acompanhando a posição da barra de rolagem, com os comandos de zoom do meu controle, etc. Era uma dor na bunda e olhando para trás, eu deveria ter usado as instalações do Windows. Eles também não são fáceis de usar, por que eu pensei que poderia fazer melhor eu mesmo em primeiro lugar - acontece que eu estava errado :)

  • Finalmente, embora eu não possa dizer com certeza da sua pergunta se você está realmente nesse barco, não pense em termos de distâncias físicas (milímetros etc.). A primeira coisa que você deseja acertar é desenhar a forma na tela, com as proporções certas entre os elementos. Então você deseja aumentar/diminuir o zoom. Finalmente, é somente quando você chega à parte de impressão que as medidas físicas entram em jogo. A única coisa que você precisa descobrir por aí (simplificando um pouco aqui) é 'qual é a proporção de zoom correta necessária para obter a saída necessária'. Isso é um pouco complicado, mas tem muito pouco a ver com o que parece ser a primeira parte da sua pergunta (como desenhar seu componente para a tela).

Se você está tendo problemas, não hesite em postar perguntas mais específicas. Eu tenho o código de visualização e impressão de impressão aqui como um exemplo das partes 'genéricas' do processo de impressão, embora os detalhes sejam obviamente diferentes para cada aplicativo.

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