Open
Description
Big upper part is not pattern rendered good precision and quality, back little pattern part bad quality, less presision.
Here is my SVG
<svg viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol id="el1" width="50" height="50">
<rect x="-5" y="-5" width="60" height="60">
</rect>
<line class="block" x1="-5" y1="-5" x2="55" y2="55" stroke="blue"></line>
<rect x="-18" y="-18" width="36" height="36" transform="rotate(45)" fill="green"></rect>
<circle cx="50" cy="50" r="26" fill="orange">
</circle>
<circle cx="50" cy="50" r="16" fill="olive">
</circle>
</symbol>
<symbol id="big1" width="100" height="100" viewBox="-50 -50 100 100">
<use width="50" height="50" href="#el1" transform=""/>
<use width="50" height="50" href="#el1" transform="scale(-1,-1)"/>
<use width="50" height="50" href="#el1" transform="scale(-1,1)"/>
<use width="50" height="50" href="#el1" transform="scale(1,-1)"/>
</symbol>
<pattern id="pat1" width="70" height="70" viewBox="0 0 200 200" patternUnits="userSpaceOnUse">
<use x="0" y="0" width="100" height="100" href="#big1" fill="pink" />
<use width="100" transform="translate(100,0)" height="100" href="#big1" fill="blue" />
<use x="0" y="100" width="100" height="100" href="#big1" fill="#ecffad" />
<use x="100" y="100" width="100" height="100" href="#big1" fill="#bbffad" />
</pattern>
</defs>
<rect class="block" x="0" y="0" width="400" height="400" fill="url(#pat1)"></rect>
<use x="120" y="120" width="100" height="100" href="#big1" fill="red" />
</svg>
And render code
SvgDocument svgDoc = SvgDocument.Open("1.svg");
System.Drawing.Bitmap bm = svgDoc.Draw();
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100l);
myEncoderParameters.Param[0] = myEncoderParameter;
svgDoc.ShapeRendering = SvgShapeRendering.GeometricPrecision;
svgDoc.Height = new SvgUnit(SvgUnitType.Pixel, 1200);
svgDoc.Width = new SvgUnit(SvgUnitType.Pixel, 1200);
bm = svgDoc.Draw();
bm.Save("rez.jpg", jgpEncoder,myEncoderParameters);
ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}