これに答えるのは少し遅れましたが、「写真ボックスに何mm入れることができますか?」という質問に答えようとしたときにGoogleで見つけたので、そうすると思いました。それを行う方法を考え出す必要があります!。GetBoundsは役に立ちません(ピクセル単位で表示したい場合は...)が、Graphics.TransformPointsメソッドを使用して描画単位と表示ピクセルの関係を見つけることができます。
private void Form1_Load(object sender, EventArgs e)
{
Bitmap b;
Graphics g;
Size s = pictureBox1.Size;
b = new Bitmap(s.Width, s.Height);
g = Graphics.FromImage(b);
PointF[] points = new PointF[2];
g.PageUnit = GraphicsUnit.Millimeter;
g.PageScale = 1.0f;
g.ScaleTransform(1.0f, 1.0f);
points[0] = new PointF(0, 0);
points[1] = new PointF(1, 1);
g.TransformPoints(CoordinateSpace.Device, CoordinateSpace.Page, points);
MessageBox.Show(String.Format("1 page unit in {0} is {1} pixels",g.PageUnit.ToString(),points[1].X));
points[0] = new PointF(0, 0);
points[1] = new PointF(1, 1);
g.TransformPoints(CoordinateSpace.Page, CoordinateSpace.World, points);
MessageBox.Show(String.Format("1 page unit in {0} is {1} pixels",g.PageUnit.ToString(),points[1].X));
g.ResetTransform();
pictureBox1.Image = b;
SolidBrush brush = new SolidBrush(Color.FromArgb(120, Color.Azure));
Rectangle rectangle = new Rectangle(10, 10, 50, 50);
// Fill in the rectangle with a semi-transparent color.
g.FillRectangle(brush, rectangle);
pictureBox1.Invalidate();
}
これにより、ピクセルを表示するための基本的なmmが表示されます(私の場合は3.779527)。ワールド座標はピクセルあたり1 mmです。これは、graphics.ScaleTransformを適用した場合に変更されます。
編集:もちろん、ビットマップをpictureBox imageプロパティに割り当てる(そして必要に応じて変更できるようにGraphicsオブジェクトを保持する)と役立ちます。