投稿者 yamaV1.02β  (社会人) 投稿日時 2009/5/10 08:59:45
neptuneさん返信ありがとうございます。
   
>console.writeline(g.width.tostring("d"),g.Height.tostring("d"))
       Using p As New Pen(Color.Red)
            p.Width = 10
            Dim g As Graphics = e.Graphics
            g.DrawRectangle(p, 10, 20, 100, 100)
            Console.WriteLine(g.width.tostring("d"), g.Height.tostring("d"))
                              ~~~~~~~~               ~~~~~~~~~
        End Using


~~~~部分で widthは'System.Drawing.Graphics'のメンバーではありません、とエラーになります。

エクセルVBAだと、

g.DrawRectangle(p, 10, 20, 100, 100)

で描画した図形を任意に宣言したオブジェクト変数に SET できるのですが、
Sub testRectangle()
    Dim myRec As Shape
        Set myRec = _
            Sheet1.Shapes.AddShape( _
            msoShapeRectangle, 0, 0, 100, 100)
        
        Debug.Print myRec.Width, myRec.Height
End Sub

ここでやってる事はワークシート上のシェイプオブジェクトに対する操作なので、比較して論じる事自体がまちがっているという認識をしつつあります。

みなさんの環境では、「myRec.Width, myRec.Height は 99.75 を返します。」という状況は再現しませんでしょうか?

僕のPCだと、Xl2000とXl2003の両方で再現できます。

どんなものでしょうか。

http://www.moug.net/faq/viewtopic.php?p=261089#261089
↑にマルチスレッドたてました