Apoio ao atributo “não escalonável” SVG

Tradução automática de Deepl

Por vezes é preferível que as linhas de um objecto mantenham a sua largura original, independentemente da transformação aplicada. Por exemplo, desenha-se uma linha num mapa mostrando a posição de um utilizador e um destino. Quando o utilizador faz zoom no mapa, pretende ampliar o mapa, mas fazer com que a linha mantenha a sua largura.

Na norma SVG, o atributo “non-scaling-stroke” indica que a largura do traço não depende do zoom ou da escala. Por outras palavras, as linhas de um objecto não são afectadas pelas transformações e pelo zoom.

Aqui está um exemplo de dois rectângulos com a mesma espessura de linha. O rectângulo à esquerda utiliza o atributo “non-scaling-stroke”, enquanto que o rectângulo à direita não utiliza este atributo:

Dê uma vista de olhos ao ficheiro SVG:

<svg viewBox="0 0 90 45" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="1" width="40" height="40" fill="white" stroke="blue" stroke-width="1px" vector-effect="non-scaling-stroke"/>
<rect x="45" y="1" width="40" height="40" fill="white" stroke="green" stroke-width="1px" />
</svg>

Também acrescentámos novos comandos ao tema “4D SVG”. É possível definir o atributo “non-scaling-stroke” para desenhar objectos com o SVG_SET_STROKE_VECTOR_EFFECT método.

// Create view box
$svgRef:=SVG_New (90;45)

// First rectangle with the non-scaling-stroke attribute
$rect1 :=SVG_New_rect ($svgRef;1;1;40;40;0;0;0; "azul"; "branco";1)
SVG_SET_STROKE_VECTOR_EFFECT ($rect1; "non-scaling-stroke")

// Second rectangle
$rect2 :=SVG_New_rect ($svgRef;45;1;40;40;0;0; "verde"; "branco";1)

// Save image on disk
File ("/RESOURCES/Images/rectangle.svg").create()
SVG_SAVE_AS_TEXT ($svgRef; File("/RESOURCES/Images/rectangle.svg")
.platformPath)

// Clear reference

SVG_CLEAR ($svgRef)

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.