Alguém aí já inseriu um arquivo SLD num DCL?
Lá na tile "image" ou image_button?
O slide era retangular, ou quadrado? e como você sabe disso? e image_button tinha a mesma relação de aspecto que o seu slide? E como saber se está?
Mas... O que diabos é relação de aspecto????
Eu explico:
Relação de aspecto: é o valor que obtemos ao dividir a altura pela largura
Num quadrado, temos que esta divisão resulta um, num retângulo, um valor diferente de um.
O que acontece quando tentamos preencher a image_button do dcl com um slide? Mesmo que forcemos as dimensões do slide, assim:
[code](slide_image x1 y1 width height sldname)[/code]
O slide não se deforma, e poderá acontecer de "sobrar" espaço na image_button, certo?
Ai fica meio "feio"... Desproporcional...
Se soubermos qual a relação de aspecto do slide e do image_button poderemos dizer quem é "mais retangular" e assim, calcular x1,y1,width,height que deixem o slide mais bem posicionado, isto é, centralizado
Agora, o comando que cria o slide ( MSLIDE na linha de comando) não pergunta nem diz que tamanho irá ter o slide... Ai complica... Você tem de deixa a área visível do desenho na relação que você precisa...
Mas ainda assim, não saberá qual o tamanho do slide...
Na verdade, ele terá, em pixels, a mesma dimensão dessa área visível, a as propriedades width e height do objeto Window, levam em conta as "bordas" da janela, portanto não são utilizáveis, a não ser que você saiba quantos pixels ela usa...
Com o "print screen" e o paint dá pra contar quantos pixels deu... ( aff ... )
Uma boa dica é, na definição do image_button (ou image), usar o atributo width e o atributo aspect_ratio, ou o atriguto height com o atributo aspect_ratio, pois assim tem-se certeza do tamanho do slide... lembrando que width e height não são dados em pixels, mas em uma proporção do tamanho dos caractéres visualizados no dcl...
Bom, pra encurtar:
É possível "extrair" do slide qual suas dimensões em pixels, para isso temos de ler os BYTES corretos do arquivo e assim, proceder a inserção do slide da melhor maneira, veja a rotina
Lá na tile "image" ou image_button?
O slide era retangular, ou quadrado? e como você sabe disso? e image_button tinha a mesma relação de aspecto que o seu slide? E como saber se está?
Mas... O que diabos é relação de aspecto????
Eu explico:
Relação de aspecto: é o valor que obtemos ao dividir a altura pela largura
Num quadrado, temos que esta divisão resulta um, num retângulo, um valor diferente de um.
O que acontece quando tentamos preencher a image_button do dcl com um slide? Mesmo que forcemos as dimensões do slide, assim:
[code](slide_image x1 y1 width height sldname)[/code]
O slide não se deforma, e poderá acontecer de "sobrar" espaço na image_button, certo?
Ai fica meio "feio"... Desproporcional...
Se soubermos qual a relação de aspecto do slide e do image_button poderemos dizer quem é "mais retangular" e assim, calcular x1,y1,width,height que deixem o slide mais bem posicionado, isto é, centralizado
Agora, o comando que cria o slide ( MSLIDE na linha de comando) não pergunta nem diz que tamanho irá ter o slide... Ai complica... Você tem de deixa a área visível do desenho na relação que você precisa...
Mas ainda assim, não saberá qual o tamanho do slide...
Na verdade, ele terá, em pixels, a mesma dimensão dessa área visível, a as propriedades width e height do objeto Window, levam em conta as "bordas" da janela, portanto não são utilizáveis, a não ser que você saiba quantos pixels ela usa...
Com o "print screen" e o paint dá pra contar quantos pixels deu... ( aff ... )
Uma boa dica é, na definição do image_button (ou image), usar o atributo width e o atributo aspect_ratio, ou o atriguto height com o atributo aspect_ratio, pois assim tem-se certeza do tamanho do slide... lembrando que width e height não são dados em pixels, mas em uma proporção do tamanho dos caractéres visualizados no dcl...
Bom, pra encurtar:
É possível "extrair" do slide qual suas dimensões em pixels, para isso temos de ler os BYTES corretos do arquivo e assim, proceder a inserção do slide da melhor maneira, veja a rotina
(defun get-sld-dim (file / tmp l)
(setq tmp (open file "r"))
(repeat 18 (read-char tmp))
(setq l (list (read-char tmp) (read-char tmp)
(read-char tmp) (read-char tmp)))
(close tmp)
(list (+ (* 256 (cadr l)) (car l))
(+ (* 256 (cadddr l)) (caddr l))))
Para usar, faça (por exemplo):
(get-sld-dim "d:/neyton/expge/expge.sld")
isso irá retornar uma lista, com as dimensões em pixels da largura e da altura do slide, no exemplo, me retornou (721 361), onde 721 é a largura e 361 a altura
(setq tmp (open file "r"))
(repeat 18 (read-char tmp))
(setq l (list (read-char tmp) (read-char tmp)
(read-char tmp) (read-char tmp)))
(close tmp)
(list (+ (* 256 (cadr l)) (car l))
(+ (* 256 (cadddr l)) (caddr l))))
Para usar, faça (por exemplo):
(get-sld-dim "d:/neyton/expge/expge.sld")
isso irá retornar uma lista, com as dimensões em pixels da largura e da altura do slide, no exemplo, me retornou (721 361), onde 721 é a largura e 361 a altura
Nenhum comentário:
Postar um comentário