よく、同じパスを2回、黒い背景に白いブラシ、白い背景に黒いブラシでレンダリングします。色が反転すると、同じパスが異なるサイズにレンダリングされますか?
結果は同じ画像でなければなりませんが、逆さまですか?私はこれらの
を描画するために使用まあ間違った黒の背景に描かれています1が数ピクセル大きくなっ..です
差分
コード
PointF[] points = LoadXml<PointF[]>(@"T:\Points.xml");
byte[] types = LoadXml<byte[]>(@"T:\Types.xml");
GraphicsPath path = new GraphicsPath(points, types, FillMode.Alternate);
using (Image image = new Bitmap(45, 45))
{
using (Graphics g = Graphics.FromImage(image))
{
Render(g, Color.White, Color.Black, path);
}
image.Save(@"T:\White.bmp", ImageFormat.Bmp);
}
using (Image image = new Bitmap(45, 45))
{
using (Graphics g = Graphics.FromImage(image))
{
Render(g, Color.Black, Color.White, path);
}
image.Save(@"T:\Black.bmp", ImageFormat.Bmp);
}
private static T LoadXml<T>(string file)
{
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (Stream stream = File.OpenRead(file))
{
return (T)xmlSerializer.Deserialize(stream);
}
}
private static void Render(Graphics g, Color mainColor, Color backColor, GraphicsPath graphicsPath)
{
g.CompositingQuality = CompositingQuality.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBilinear;
g.Clear(backColor);
using (SolidBrush mainBrush = new SolidBrush(mainColor))
{
g.FillPath(mainBrush, graphicsPath);
}
}
パスを変更せずに同じ方法でレンダリングする方法はありますか?
あなたは錯覚だけではないと確信していますか?私と同じように見える。 – asawyer
四角形の間のスペースを見て、それを検証するために比較ツールを使用したこともあります。この差分を示すもう1つの画像を追加しました。 – Peter
フィルタをオフにして画像を投稿してください – asawyer