Někdy je vhodnější, aby si čáry objektu zachovaly svou původní šířku bez ohledu na použitou transformaci. Například na mapě nakreslíte čáru zobrazující polohu uživatele a cíl cesty. Když uživatel mapu přiblíží, chcete mapu zvětšit, ale aby si čára zachovala svou šířku.
Ve standardu SVG atribut „non-scaling-stroke“ označuje, že šířka tahu nezávisí na zvětšení nebo škálování. Jinými slovy, čáry objektu nejsou ovlivněny transformací a zvětšením.
Zde je příklad dvou obdélníků se stejnou tloušťkou čar. Obdélník vlevo používá atribut „non-scaling-stroke“, zatímco obdélník vpravo tento atribut nepoužívá:
Podívejte se na soubor 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>
Přidali jsme také nové příkazy do tématu „4D SVG“. K objektům kreslení můžete definovat atribut „non-scaling-stroke“ pomocí příkazu SVG_SET_STROKE_VECTOR_EFFECT metodou.
// 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; "modrá"; "bílá";1)
SVG_SET_STROKE_VECTOR_EFFECT ($rect1; "non-scaling-stroke")
// Second rectangle
$rect2 :=SVG_New_rect ($svgRef;45;1;40;40;0;0; "zelená"; "bílá";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)