Página 2 de 2

Re: Win32prn() só tem me dado dor de cabeça

Enviado: 22 Fev 2010 13:06
por gvc
[Hasse]
O valor 54 CPI, da terceira linha, multiplicado por 3, resulta em 18 CPI, que é igual ao exemplo da primeira linha.
Só uma coisinha. 54 * 3 = 18??? (eh.eh.eh.)

Ah! Espero que vc entenda isso como uma brincadeira entre amigos. Sabe que hoje é segundona e tem que rir um pouco.

Re: Win32prn() só tem me dado dor de cabeça

Enviado: 22 Fev 2010 13:37
por Toledo
gvc, na verdade é divisão e não multiplicação.
Hasse escreveu:oPrinter:SetFont( 'Courier New',12,{1,18},,.F.,.F. )
oPrinter:SetFont( 'Courier New',12,{2,36},,.F.,.F. )
oPrinter:SetFont( 'Courier New',12,{3,54},,.F.,.F. )
{1,18} = 18 dividido por 1 é igual 18
{2,36} = 36 dividido por 2 é igual 18
{2,54} = 54 dividido por 3 é igual 18

Abraços,

Re: Win32prn() só tem me dado dor de cabeça

Enviado: 22 Fev 2010 18:54
por Hasse
Amigo GVC:
Uma boa brincadeira é sempre agradável e muito bemvinda.

É muito estranho essa conta, para nós, que estamos acostumados ao sistema métrico decimal.

Amigo Toledo:
Eu diria que, aparentemente, é uma divisão, mas técnicamente e matematicamente é multiplicação. Vejamos:

Se você tem uma fonte de 18 CPI (tamanho 1,41 mm) e deseja dobrar o tamanho dela, você multiplica ela por 2, e terás 9 CPI (tamanho 2,82 mm).
Se você triplica o tamanho, terás 6 CPI (tamanho 4,23 mm).

Coisas de inglês, sistema fracional (e americano, aliás também alemão, e grande parte do mundo civilizado, antes da guerra). Ainda bem que inventaram o sistema decimal, que tornou as coisas muito mais fáceis.

Contudo, muito mais importante do que essa balela toda, é o resultado final obtido.

Re: Win32prn() só tem me dado dor de cabeça

Enviado: 22 Fev 2010 21:05
por Toledo
Hasse, o que tentei explicar para o amigo gvc é que o terceiro parâmetro da função SetFont, quando passado em forma de matriz, para se calcular a largura da fonte em CPI, você deve dividir o segundo elemento da matriz pelo valor do primeiro elemento. Então, {1,18}, {2,36} e {3,54} é tudo a mesma coisa, pois o resultado será 18 CPI.

Se você observar a sintaxe da função SetFont() da classe Win32prn, vai notar que na descrição do parâmetro <nFontWidth> fala o seguinte:
<nFontWidth>:
Este pode ser um valor numérico que indica a largura da fonte em pixels. Se omitido, uma fonte de tamanho padrão é usado. Alternativamente, um array com dois elementos podem ser passados. Ele é usado para calcular a largura da fonte na unidade "caracteres por polegada" (CPI), dividindo o segundo elemento pelo primeiro elemento. Por exemplo:
aFontWidth: = (3, 50)

nCPI: = aFontWidth [2] / aFontWidth [1]

? nCPI // 16,67 caracteres por polegada

Quando a matriz (0,0) é passado, a largura da fonte padrão é selecionado.
Nota: quando o segundo elemento contém um valor negativo, o espaçamento de caracteres fixa é aplicada, mesmo se a fonte é uma fonte proporcional.
Hasse escreveu:Se você tem uma fonte de 18 CPI (tamanho 1,41 mm) e deseja dobrar o tamanho dela, você multiplica ela por 2, e terás 9 CPI (tamanho 2,82 mm).
Se você triplica o tamanho, terás 6 CPI (tamanho 4,23 mm).
Bom, neste caso você teria que passar a matriz {1,18} para 18 CPI, {2,18} para 9 CPI e {3,18} para 6 CPI. Onde dividindo o segundo elemento pelo primeiro elemento de cada matriz, você realmente vai ter 18, 9 e 6 CPI.

Abraços,