VisualStudio 2017 .Net 4.7.2 Windows10
上記の環境化で、指定されたサイズの図形を作成し、図形分のBitmapエリアを用意して
任意のpictureboxに表示するということを行いたいのですが、図形分のbitmapエリアを用意して描画した場合
四辺の何れかが欠ける場合があります。かけない場合もあります。
欠けないように描画するには+1pointなど固定値で微調整が必要なのでしょうか?
DrawPolygon(PointF)の場合は、底辺が欠ける場合があります。
DrawElipceまたはDrawArc(RectangleF)の場合は、左辺、上辺、下辺、右辺がそれぞれ欠ける場合があります。
基本的に0.0f, 0.0fの左上から書いています。
必ず欠けるならわかるのですが、欠ける場合の円、欠けない場合の円などがあるのでfloat型を使うことによっての
誤差でかけてるのでしょうか?
Bitmapを生成する場合は、Bitmapはint型なので若干大きくなるようにしています。
例えば、円の場合
float width = 15.5f;
float height = 15.5f;
Bitmapは整数型でしか初期化できないので、切り上げして大きめに確保しています。
new Bitmap((int)Math.Ceiling(width), (int)Math.Ceiling(height));
追記)
Polygonの場合は、bitmapに幅+1、高さ+1で見きれない
Elipceの場合は、描画位置を0,0から1,1に変更し、bitmapに+1,+1で見切れないが
小さい円だと右端の先端が若干かける場合がある。
※小さい円で若干欠ける問題は
g.SmoothingMode = SmoothingMode.AntiAlias;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
を指定すると問題なし。
です。