Saya ingin dapat menyetel lebar goresan pada elemen SVG menjadi "peka-piksel", yang selalu lebar 1 piksel terlepas dari transformasi penskalaan saat ini yang diterapkan. Saya sadar bahwa ini mungkin tidak mungkin, karena inti dari SVG adalah tidak bergantung pada piksel.
Konteksnya sebagai berikut:
Saya memiliki elemen SVG dengan viewBox dan set atribut preservAspectRatio. Ini terlihat seperti ini
<svg version="1.1" baseProfile="full"
viewBox="-100 -100 200 200" preserveAspectRatio="xMidYMid meet"
xmlns="http://www.w3.org/2000/svg" >
</svg>
Ini berarti bahwa ketika saya menskalakan elemen itu, bentuk sebenarnya di dalamnya berskala sesuai (sejauh ini bagus).
Seperti yang Anda lihat, saya telah mengatur viewBox sehingga asalnya ada di tengah. Saya ingin menggambar sumbu x dan y di dalam elemen itu, yang saya lakukan sebagai berikut:
<line x1="-1000" x2="1000" y1="0" y2="0" />
Sekali lagi, ini berfungsi dengan baik. Idealnya, lebar sumbu ini selalu hanya 1 piksel. Saya tidak tertarik pada sumbu yang semakin gemuk ketika saya menskalakan elemen induk svg.
Jadi apakah saya kacau?
sumber
vector-effect
properti. Apakah mungkin untuk mencapai efek yang sama sepertivector-effect: non-scaling-stroke
di IE11?fill
kenone
dan sebaliknya untukstroke
), menghitung & mengatur transformasi yang sesuai (satu untuk bagian isian dan satu untuk bagian goresan). Ini pasti akan sedikit berantakan, tetapi itu dia - Anda mungkin juga ingin meminta Microsoft menambahkan dukungan untuk itu. Bagaimanapun, saya pikir pertanyaan Anda layak menjadi pertanyaannya sendiri.